C++ 从向量数组调用函数
在下面的代码中,我在第33行得到一个错误。为什么?正确的语法是什么? 我肯定犯了一些愚蠢的错误。。。不幸的是,我正试图更好地理解向量C++ 从向量数组调用函数,c++,class,vector,C++,Class,Vector,在下面的代码中,我在第33行得到一个错误。为什么?正确的语法是什么? 我肯定犯了一些愚蠢的错误。。。不幸的是,我正试图更好地理解向量 #include <iostream> #include <vector> class firstClass { public: firstClass(int x, int y):sum(x+y) { } void getSum() {
#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;
}
访问数据成员的正确语法应为:
(*(obj2->obj))[0].getSum();
注意,secondClass::obj是私有数据成员,所以您不能在main中访问它
对于您展示的代码示例,您根本不需要使用原始指针和new
即使您正确地命名了obj,它也是私有的,并且在主要方面是不可访问的。你为什么要创建一个新的向量?只需使用非指针向量成员。我认为您要执行的语法是*obj2->obj[0]。getSum;,但是obj是私有的,所以您将得到另一个错误。谢谢!1.如何在不使用new的情况下创建secondClasse?2.如果我在object中还有另一个对象向量,那么语法是什么?3.事实上,问题出在另一个程序中,我快速编写了示例,因此犯了一些错误。@nostyn 1。只需编写第二类obj2;然后像obj2.obj一样使用它。2.与1相同。我的意思是:obj3->obj2[1]->obj1[3]您可以给我举个例子吗?@nosyn obj3->obj2[1]->obj1[3]?错误信息是什么?
(*(obj2->obj))[0].getSum();