1

現在、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);
}
4

1 に答える 1

0

step()GameMap.cppのの定義を見てください-クラス名がありません。として宣言されている必要がありますvoid GameMap::step()。エラーは実際にはstepの定義が見つからないことを示しているはずですが、すばらしいC ++ FAQで説明されているように、代わりにこのエラーが発生する可能性があります。

于 2011-07-17T10:55:15.327 に答える