gpt4 book ai didi

c++ - std::vector 持有基类实例而不是派生类的实例

转载 作者:行者123 更新时间:2023-11-27 22:59:35 25 4
gpt4 key购买 nike

我对 C++ vector 的理解有问题:我从 vector 获得的对象始终是基本抽象类,而不是添加到它的派生类。

  1. 我有一个 vector :

    vector<SceneNode*> children;

其中SceneNode是一个具有纯虚函数的抽象类。

  1. 我将 ImageSceneNode 的实例(派生自 SceneNode)添加到此 vector :

    lib::ImageSceneNode node(static_cast<TextureAsset*>(test));

    sceneManager.getRoot()->addChild(&node);

addChild 函数在哪里:

   void SceneNode::addChild(SceneNode* child) noexcept {
this->children.push_back(child);
}
  1. 稍后,当我迭代 vector 时,内部对象是 SceneNode 的一个实例,并因“纯虚函数”调用错误而失败:

enter image description here

请问能帮忙吗,谢谢!

最佳答案

“纯虚函数调用”错误最常见于已销毁的对象。我注意到您正在获取并持有指向 node 的指针,这是一个具有局部作用域的变量。如果您在函数退出后尝试从 children 中的指针访问该对象,您将遇到类似这样的错误。

关于c++ - std::vector 持有基类实例而不是派生类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29181501/

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