class A{
Add(const B&);
vector <B*> vect;
};
A & A::Add(const B& obj){
vect.push_back(&obj);
return *this;
}
这里出现 fpermissive 错误,因为 push_back 的参数是常量,我该如何摆脱它?
我尝试在 Add 中创建本地拷贝,例如
B tmp;
tmp = obj;
vect.push_back(&tmp);
但我不确定这一点,因为程序退出此方法 Add,tmp 被破坏,vector 中的地址将指向内存中的无效位置?
最佳答案
您的问题是由 API 不一致引起的。这里有 2 个选项:
- 放下
const
来自Add
的签名:Add(B&)
- 商店
const B*
vector 中的指针:vector<const B*> vect;
第一个选项将允许修改对象的内容,而第二个选项将禁止它。选择取决于您的程序逻辑。
关于c++ - 添加到指针 vector 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29575938/