我对C ++向量理解有一个问题:我从vector得到的对象总是一个基本的抽象类,而不是添加到它的派生类。
我有一个矢量:
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);
}
你能帮忙吗,谢谢你!
答案 0 :(得分:4)
对于已被销毁的对象,最常遇到“纯虚函数调用”错误。我注意到你抓住了一个指向node
的指针,这是一个具有局部范围的变量。如果您在函数退出后尝试从children
中的指针访问该对象,那么您将遇到类似这样的错误。