带指针的c ++ vector push_back

时间:2012-02-19 03:53:02

标签: 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);
}

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

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

以下是一些截图,显示了究竟发生了什么。在被调用者中,如果我们检查将通过引用传递的参数,我们可以看到input_component成员没有被破坏。 enter image description here url to image:http://i.imgur.com/lKpRm.png

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

enter image description here url to image:http://i.imgur.com/x0Vdn.png

我一直认为通过const引用传递,对象不应该在函数内部/外部有所不同。我不明白为什么对象会被改变,如果通过const引用传递。

1 个答案:

答案 0 :(得分:1)

首先,通过valgrind运行代码,查看实际发生损坏的位置。将指针推送到数组上不应对指向的数据执行任何操作。