Undef ref для vtable в конструкторе и деструктор в не Q - PullRequest
1 голос
/ 16 июля 2011

У меня есть базовый класс GameObject, который в настоящее время является родителем Camera и SolidObject. SolidObject родители, игрок и GameMap. По какой-то причине я получаю только неопределенные ссылки на vtable в конструкторе и деструкторе GameMap. Вот код (я не буду включать камеру или плеер). ПРИМЕЧАНИЕ: 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);
}

1 Ответ

0 голосов
/ 17 июля 2011

Посмотрите на определение step() в GameMap.cpp - в нем отсутствует имя класса.Он должен был быть объявлен как void GameMap::step().На самом деле в ошибке должно было быть упомянуто, что определение step не может быть найдено, но , как объяснено в великом FAQ по C ++ , вы могли бы получить эту ошибку вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...