我有一个基类GameObject,它目前是父Camera和SolidObject。 SolidObject父级玩家和GameMap。出于某种原因,我只是在GameMap的构造函数和析构函数中获得了对vtable的未定义引用。这是代码(我不会包括相机或播放器)。注意:GameObject和SolidObject在World.h中,因为它们很小并且需要连接。我只会包含与这些类和GameMap相关的内容。
我切换了继承,因此GameMap继承自GameObject而不是SolidObject,但它仍会导致相同的错误。
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);
}
答案 0 :(得分:0)
在GameMap.cpp中查看step()
的定义 - 它缺少类名。它应该被声明为void GameMap::step()
。该错误实际上应该提到无法找到step
的定义,但as explained in the great C++ FAQ,您可能会收到此错误。