从方法返回对向量的引用并使用其公共成员

mem*_*emC 1 c++ stdvector

我有一个t_vec存储类实例的引用的向量Too.代码如下所示.在main,我有一个向量t_vec_2,其内存地址与B::t_vec.

但是当我尝试访问t_vec_2 [0] .val1时,它会出错val1 not declared.

你能指出出了什么问题吗?此外,如果您知道从方法返回矢量的更好方法,请告诉我!提前致谢.

class Too {      
      public:             
             Too();
             ~Too(){};
          int val1;
};

Too::Too(){
           val1 = 10;
           };


class B {
      public:
             vector<Too*> t_vec;
             Too*  t1;
             vector<Too*>& get_tvec();
             B(){t1 = new Too();};
             ~B(){delete t1;};
};

vector<Too*>& B::get_tvec(){
    t_vec.push_back(t1);
    return t_vec;
}

int main(){
    B b;
    b = B();
    vector<Too*>& t_vec_2 = b.get_tvec();

    // Getting error    
    std::cout << "\n val1 = " << t_vec_2[0].val1;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Max*_*Max 5

你有两个错误:第一个已经说过,你应该写

t_vec_2[0]->val1
Run Code Online (Sandbox Code Playgroud)

代替

t_vec_2[0].val1
Run Code Online (Sandbox Code Playgroud)

第二个是奇怪的行b = B();

我想你应该删除它.发生错误是因为右侧部分B()将在创建后立即删除.因此,您不会根据需要获取对象b的10值.只需删除此行即可!