C++ vector push_back 带指针

标签 c++ vector copy push-back

我正在努力解决以下问题。我有以下函数,它接受对对象的 const 引用。我想要做的是提供存储,指向正在引用的对象组件的指针。但是,当我调用 storage.push_back() 更改对象组件正在引用(它的成员数据被损坏)

我只是试图存储一个指向同一对象组件的指针,而不是改变对象。

void InputSystem::RegisterInputAcceptingEntity(const PlayerInputComponent &component) {

    auto *cpy = &component;

    std::vector<const PlayerInputComponent*> storage;
    storage.push_back(cpy);
}

为什么上面的代码会改变引用的对象组件?

编辑:好的,我编辑了 vector 以包含常量指针。

这里有一些屏幕截图可以准确显示正在发生的事情。在被调用方中,如果我们检查将通过引用传递的参数,我们可以看到 input_component 成员没有损坏。 enter image description here 图片网址:http://i.imgur.com/lKpRm.png

然而,在第二张图片中,就在进入上述方法之后:

enter image description here 图片网址:http://i.imgur.com/x0Vdn.png

我的印象是,通过 const 引用传递时,对象在函数内部/外部应该没有区别。如果通过 const 引用传递,我完全不明白为什么对象会被改变。

最佳答案

首先,通过 valgrind 运行您的代码并查看损坏实际发生的位置。将指针插入数组不应对指向的数据做任何事情。

关于C++ vector push_back 带指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9346530/

相关文章:

constructor - 使用私有(private)属性复制构造函数

C++:复制到解除引用的指针

c++ - assert(true) 警告签名/未签名不匹配

c# - 如何找到与给定向量正交的随机向量

c++ - XCode、命名空间、C++ 和代码可移植性

c++ - 以行和列的形式访问 vector<vector<char>> 元素

javascript - 想要将 Rally 故事从一个项目复制到另一个项目

c++ - Windows 不在 OpenGL 窗口上方绘制

c++ - C++ 标准甚至定义了 "lock-free"的含义吗?

c++ - std::pow 给出分数指数的错误近似值