gpt4 book ai didi

c++ - 为什么我不能将项目添加到我的 vector 中?

转载 作者:太空狗 更新时间:2023-10-29 19:38:32 25 4
gpt4 key购买 nike

我在一个类中有以下代码:

    class A
{
std::vector<Parameter*> params;
std::vector<Parameter*> getParamVector() {return params;}
void addOneParam(Parameter* param)
{
params.push_back(param);
}
}

在另一个类 B 类 中,我尝试通过这样做将项目添加到 params vector 中:

classA_Ptr->getParamVector().push_back(aParamPtr);

但是在上述调用之后,params vector 的大小仍然为 0。

我必须在上面添加 addOneParams(Parameter* param) 方法以将项目添加到 params vector 中。为什么?

最佳答案

getParamVector() 返回 params拷贝。因此,当您将 push_back 添加到它上面时,您将添加到一个临时的 vector 中,它会立即被删除。这绝不会影响 params 的大小。

如果您希望能够通过 getParamVector() 执行此操作,则必须将 reference 返回给 params:

std::vector<Parameter*>& getParamVector() {return params;}
^^^

关于c++ - 为什么我不能将项目添加到我的 vector 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30520465/

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