1

我有一个基类 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);
}
4

1 回答 1

0

查看step()GameMap.cpp 中的定义 - 它缺少类名。它应该被声明为void GameMap::step(). 该错误实际上应该提到step无法找到 的定义,但正如伟大的 C++ FAQ 中所解释的,您可能会收到此错误。

于 2011-07-17T10:55:15.327 回答