가상 함수에 대해 많은 내용을 읽었지만 여전히 원하는 방식으로 작업 할 수는 없습니다.가상 함수 재정의
기본적으로, 나는 다음 클래스있어 :
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);
}
을 나는 몸을 상속하는 새로운 클래스를 만들 생각과 아이디어는 내가 그 수업에서 "()로 setModel"을 무시하고, 생성자로드 것입니다 내 새 모델, 기본 대신; like
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의 새 인스턴스를 만들 때 항상 My Viper 모드 대신 Cube 모델을 만듭니다.
내가 생각하는 것처럼 작동하도록 가상 기능을 사용할 수 있습니까? 또는 각각의 클래스에서 모델을 만들기 위해 생성자를 변경해야합니까?
감사
생성자에서 가상 함수를 호출하면 안됩니다. http://stackoverflow.com/questions/962132/calling-virtual-functions-inside-constructors – mathematician1975
개체를 만드는 방법은 무엇입니까? 사용법을 보여주십시오.이 경우 매우 중요합니다. –