我有一个基类 GameObject,它目前是 Camera 和 SolidObject 的父类。SolidObject 父级 Player 和 GameMap。出于某种原因,我只在 GameMap 的构造函数和析构函数中获得了对 vtable 的未定义引用。这是代码(我不包括相机或播放器)。注意:GameObject 和 SolidObject 在 World.h 中,因为它们很小并且需要连接。我只会包含与这些类和 GameMap 相关的内容。
我切换了继承,所以 GameMap 继承自 GameObject 而不是 SolidObject,但它仍然会导致相同的错误。
世界.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;
};
世界.cpp
void GameObject::step()
{
}
游戏地图.h
class GameMap : public GameObject
{
private:
WFOBJ model;
public:
GameMap(World* world, char* modelFile, char* textureFile);
~GameMap();
void step();
void setModel();
};
游戏地图.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);
}