【发布时间】:2014-02-14 14:58:22
【问题描述】:
我已经阅读了很多关于虚拟功能的内容,但我仍然无法让某些东西按我想要的方式工作。
基本上,我有以下课程:
class Body
{
protected:
scene::ISceneNode* Model;
virtual void setModel();
public:
Body( core::vector3df Position, core::vector3df Rotation );
};
Body::Body( core::vector3df Position, core::vector3df Rotation )
{
CurrentThrust = 0;
setModel();
Model->setPosition( Position );
Model->setRotation( Rotation );
}
void Body::setModel()
{
Model = Engine::Instance->GetSceneManager()->addCubeSceneNode();
Model->setMaterialFlag( video::EMF_LIGHTING, false );
}
我正在创建继承 Body 的新类,我的想法是我在这些类中覆盖“setModel()”,并且构造函数将加载我的新模型,而不是默认模型;如下所示
class Craft : public Body
{
protected:
virtual void setModel();
public:
Craft( core::vector3df Position, core::vector3df Rotation );
};
Craft::Craft( core::vector3df Position, core::vector3df Rotation ) : Body(Position, Rotation)
{
// Other stuff
}
void Craft::setModel()
{
Model = Engine::Instance->GetSceneManager()->addAnimatedMeshSceneNode( Engine::Instance->GetSceneManager()->getMesh("resource/X-17 Viper flying.obj") ); // addCubeSceneNode();
Model->setMaterialFlag( video::EMF_LIGHTING, false );
Model->setScale( core::vector3df(0.1f) );
}
但是,当我创建 Craft 的新实例时,它总是会创建一个 Cube 模型而不是我的 Viper 模式。
是否有可能让虚拟功能像我想的那样工作?还是我只需要更改构造函数以在各自的类中创建模型?
谢谢
【问题讨论】:
-
你应该避免在构造函数中调用虚函数stackoverflow.com/questions/962132/…
-
如何创建对象?请告诉我们用法,在这种情况下它是非常重要的部分。
标签: c++ virtual overriding irrlicht