我有一个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)
你有两个错误:第一个已经说过,你应该写
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值.只需删除此行即可!
| 归档时间: |
|
| 查看次数: |
550 次 |
| 最近记录: |