繁体   English   中英

std :: vector保存基类实例,而不是派生类的实例

[英]std::vector holds base class instance and not of a derived class

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

  1. 我有一个向量:

     vector<SceneNode*> children; 

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

  1. 我将ImageSceneNode的实例(从SceneNode派生)添加到此向量:

     lib::ImageSceneNode node(static_cast<TextureAsset*>(test)); sceneManager.getRoot()->addChild(&node); 

其中addChild函数是:

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

在此处输入图片说明

能否请您帮忙,谢谢!

对于已销毁的对象,最常见的是“纯虚函数调用”错误。 我注意到您正在抓住并持有一个指向node的指针, node是具有本地作用域的变量。 如果在函数退出后尝试从children对象中的指针访问该对象,则会遇到此类错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM