在下面的代码中,第 33 行出现错误。为什么?正确的语法是什么? 我肯定犯了一些愚蠢的错误......不幸的是我正在努力更好地理解 vector 。
#include <iostream>
#include <vector>
class firstClass
{
public:
firstClass(int x, int y):sum(x+y)
{
}
void getSum()
{
std::cout << sum << std::endl;
}
private:
int sum;
};
class secondClass
{
public:
secondClass(int dim)
{
obj = new std::vector<firstClass>(dim,firstClass{3,5});
}
private:
std::vector<firstClass>*obj;
};
int main()
{
secondClass*obj2;
obj2 = new secondClass(4);
obj2->(*obj)[0].getSum(); //HERE!
return 0;
}
错误:
error: expected unqualified-id before '(' token
error: 'obj' was not declared in this scope
最佳答案
访问数据成员的正确语法应该是:
(*(obj2->obj))[0].getSum();
请注意,
secondClass::obj
是private
数据成员,因此您无法在main()
中访问它。对于您展示的代码示例,您根本不需要使用原始指针和
new
。
关于c++ - 从 vector 数组调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43454142/