我刚接触c ++并遇到问题。
S这是在myClass类的.h内部给出的:
std::vector<uint64_t> getList() const;
现在我在MyClass(.h文件)中做到了:
private: std::vector<uint64_t> list;
这在我的.cpp文件中:
std::vector<uint64_t> MyClass::getList() const{
return list;
}
但是现在,如果我想在列表上推送一个值,我只会得到列表的一个副本并继续推送。
auto list = getList();
list.push_back(1);
有人给了我一些参考提示,并尝试了以下方法:
auto& listRef = getList();
listRef.push_back(1);
我真的不知道如何使它工作...我不知道自己在做什么错。
答案 0 :(得分:1)
通过以下方式修改签名来通过引用返回列表:
std::vector<uint64_t>& MyClass::getList();
在.hpp和.cpp文件中
如果您不能更改现有签名,则可以实现一个新方法,称为 在标题中:
std::vector<uint64_t>& accessList();
在cpp中
std::vector<uint64_t>& MyClass::accessList()
{
return list;
}