C++ 从向量数组调用函数

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() {

在下面的代码中,我在第33行得到一个错误。为什么?正确的语法是什么? 我肯定犯了一些愚蠢的错误。。。不幸的是,我正试图更好地理解向量

#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();