【问题标题】:Accessing private member of class in a vector and return it as a string访问向量中类的私有成员并将其作为字符串返回
【发布时间】:2014-10-15 05:50:04
【问题描述】:

我正在尝试创建一个整数向量,然后通过一个函数将其写出,该函数将打印具有特定宽度的值。

假设vector{1,2,3,4}填充,限制宽度为4,那么输出为: 1 2 2 4

使用 turntostring 将数据类型转换为字符串并返回 int,我能够将 int 转换为字符串并在打印向量的函数中获取其大小。

turntostring(r.at(i)).size();

所以在i = 2,我有int = 4,上面的代码返回值是1

这很好,直到我必须对类向量执行相同操作,并且当我尝试访问此类中的元素时,我无法使用上面的同一行代码。

我尝试为该类编写一个打印函数并编写此函数以获得相同的结果:

r.at(i).print().size();

Print 会接受类并返回一个字符串。

但我需要使用同一行代码来访问元素的大小作为要求。这意味着同一行代码必须适用于 int 类型的 vector 和具有 int 类型成员的类的 vector 例如:

class fake
{
    int num;
}

vector<int> r;
vector<fake> k;

我应该能够访问这两个向量中的每个元素并使用.size(),然后在它们上使用turnintostring

如果有什么我不知道的方法,请告诉我。

【问题讨论】:

  • "表示向量被{1,2,3,4}填充,限制宽度为4,则输出为:1 2 2 4"。恐怕我不明白你要做什么,你能说得清楚一点吗?
  • 我忘记了 4 个空格以便显示为代码。我的意思是宽度将是给定的 int,比如说 4。宽度将限制在新行之前一行可以有多少个字符。因此对于上述内容:它将打印 1 2 然后下一行 2 4。在添加一个字符串后添加一个空格,向量中的每个元素将通过 turnintostring 在其他代码留置权中转换为字符串,它会为整个打印过程。我遇到的困难部分是使用普通的 .at() 命令访问类的私有成员。

标签: c++ class vector member


【解决方案1】:

如果你已经有string turntostring(int),那么你只需要一个演员:

class fake
{
    int num;
public:
    operator int();
}
fake::operator int() {return num;}

turntostring(some_fake);
turntostring(3);

【讨论】:

  • 我确实有类似的东西,或者尝试过。当我尝试使用 r.at(i).print().size() 从类 fake 中获取元素 num 的大小时,它起作用了,但是同一行代码不适用于 int 类型的向量。
  • 那个数字:int 不知道怎么做 print()。您可以使用我即将出现的编辑中的演员运算符。
  • 我对演员表不熟悉。像这样使用时是否返回num值 some_fake.int();
  • 不需要。使用类中的该运算符,您可以像使用整数一样使用您的对象,它会自动转换为一个。
  • 所以如果 r 是一个伪造的向量,这一行 ///// turntostring(r.at(i)).size(); ////// 会返回假成员的大小?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多