gpt4 book ai didi

c++ - 从方法返回对 vector 的引用并使用其公共(public)成员

转载 作者:行者123 更新时间:2023-11-30 01:00:23 29 4
gpt4 key购买 nike

我有一个 vector t_vec,它存储对 Too 类实例的引用。代码如下所示。在 main 中,我有一个 vector t_vec_2,它具有与 B::t_vec 相同的内存地址。

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

请问有什么问题吗?另外,如果您知道从方法返回 vector 的更好方法,请告诉我!提前致谢。

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;
}

最佳答案

您有 2 个错误:第一个已经说了,你应该写

t_vec_2[0]->val1

代替

t_vec_2[0].val1

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

我认为你应该删除它。错误发生是因为右部分 B() 将在创建后立即被删除。所以你不会在对象 b 中得到你想要的 10 值。把这一行删掉就OK了!

关于c++ - 从方法返回对 vector 的引用并使用其公共(public)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2718815/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com