gpt4 book ai didi

c++ - 我在为 vector 编写 getter 时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:05 25 4
gpt4 key购买 nike

为什么 item.someVector.push_back(1); 似乎有效,但 item.getSomeVector().push_back(1); 无效?

这是我的测试用例:

#include <iostream>
#include <vector>

using namespace std;

class Item {
public:
vector<int> someVector = vector<int>();
vector<int> getSomeVector()
{
return someVector;
}
};

int main()
{
Item item = Item();

item.getSomeVector().push_back(1);
cout << item.getSomeVector().size() << endl;
cout << item.someVector.size() << endl;

item.someVector.push_back(1);
cout << item.getSomeVector().size() << endl;
cout << item.someVector.size() << endl;
}

// output:
// 0
// 0
// 1
// 1

最佳答案

因为 getSomeVector返回 someVector 的拷贝.所以你正在更新一个临时对象,然后立即销毁。尝试将其更改为 vector<int>& getSomeVector()

关于c++ - 我在为 vector 编写 getter 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33596785/

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