現在、Camera と SolidObject の親クラスである GameObject という基本クラスがあります。SolidObject は Player と GameMap の親です。何らかの理由で、GameMap のコンストラクタとデストラクタで vtable への未定義の参照しか取得できません。コードは次のとおりです (Camera や Player は含めません)。注: GameObject と SolidObject は World.h にあり、それらは小さく接続する必要があるためです。これらのクラスと GameMap に関連するものだけを含めます。
継承を切り替えて、GameMap が SolidObject ではなく GameObject を継承するようにしましたが、それでも同じエラーが発生します。
World.h
class GameObject
{
public:
World* parent;
unsigned int objID;
virtual void step();
};
class SolidObject : public GameObject
{
public:
float xpos, ypos, zpos;
float xrot, yrot, zrot;
};
World.cpp
void GameObject::step()
{
}
GameMap.h
class GameMap : public GameObject
{
private:
WFOBJ model;
public:
GameMap(World* world, char* modelFile, char* textureFile);
~GameMap();
void step();
void setModel();
};
GameMap.cpp
void step()
{
}
GameMap::GameMap(World* world, char* modelFile, char* textureFile)
{
model.loadFile(modelFile, textureFile);
objID = world->addObject(this);
parent = world;
}
GameMap::~GameMap()
{
parent->removeObject(objID);
}