gpt4 book ai didi

C++ vector push_back 带指针

转载 作者:太空宇宙 更新时间:2023-11-04 12:12:11 25 4
gpt4 key购买 nike

我正在努力解决以下问题。我有以下函数,它接受对对象的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com