[英]std::vector holds base class instance and not of a derived class
我对C ++向量的理解有一个问题:我从向量获得的对象始终是基本抽象类,而不是添加到它的派生类。
我有一个向量:
vector<SceneNode*> children;
其中SceneNode是具有纯虚函数的抽象类。
我将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);
}
能否请您帮忙,谢谢!
对于已销毁的对象,最常见的是“纯虚函数调用”错误。 我注意到您正在抓住并持有一个指向node
的指针, node
是具有本地作用域的变量。 如果在函数退出后尝试从children
对象中的指针访问该对象,则会遇到此类错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.