c++ - 添加到指针 vector 时出错

标签 c++

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/

相关文章:

c++ - std::regex_replace 不接受少于 6 个参数

Python: AttributeError: 'str' 对象没有属性 'decompressUnknownOriginalSize'

c++ - 使用指针复制和增长现有数组

c++ - 使用Lua定义C++游戏中对象的变量

c++ - 遍历 vector 并删除内容

c++ - cryptopp 外部库依赖

php - 如何导出 PHP 扩展中的所有函数?

c++ - 具有通用引用的模板构造函数是否隐藏移动构造函数?

c++ - 为什么不调用子类方法?

c++ - 获取 char 的 ascii 值,C++ 中的 Ord 等价物