我正试图解决以下问题。我有以下函数接受对象的const引用。我想要做的是给存储,指向对象组件的指针正在引用。但是,当我调用storage.push_back()时,对象组件正在引用(它的成员数据被破坏)
我只是试图存储指向同一对象组件的指针,而不是根本改变对象。
void InputSystem::RegisterInputAcceptingEntity(const PlayerInputComponent &component) {
auto *cpy = &component;
std::vector<const PlayerInputComponent*> storage;
storage.push_back(cpy);
}
为什么上面的代码会改变对象组件的引用?
编辑:好的我编辑了矢量以包含常量指针。
以下是一些截图,显示了究竟发生了什么。在被调用者中,如果我们检查将通过引用传递的参数,我们可以看到input_component成员没有被破坏。 url to image:http://i.imgur.com/lKpRm.png
然而,在第二张图片中,刚进入上述方法后:
url to image:http://i.imgur.com/x0Vdn.png
我一直认为通过const引用传递,对象不应该在函数内部/外部有所不同。我不明白为什么对象会被改变,如果通过const引用传递。