Undefined reference to `vtable for Resource`

1

Witajcie,

Szukałem już na forum 4p i SO. Sprawdziłem dokładniej klasę bazową i pochodną czy wszystko co powinno ma implementację i tak jest.

class Resource
{
private:
    uint id, referencesCount;
    std::string name;
public:
    virtual int loadFromFile(std::wstring& name);
    virtual uint& getId();
    virtual uint& getRefs();
    virtual std::string& getName();

    Resource(uint resId, std::string& resName);
    virtual ~Resource();
}; 
 class Model : public Resource
{
private:
    std::vector<GLfloat> vert, norm, tex;
    std::vector<GLuint> element, texmap, group;
    GLuint vbo, eao;

public:
    int loadFromFile(std::wstring& name);

    Model(uint resId, std::string& resName);
    ~Model();
};

/* To jest z CPP*/
Model::Model(uint resId, std::string& resName) : Resource(resId, resName){}

Implementacje są do:

  • virtual uint& getId(); virtual uint& getRefs(); virtual std::string& getName(); Resource(uint resId, std::string&resName); virtual ~Resource(); w Resource.cpp
  • virtual int loadFromFile(std::wstring& name); tylko w Model.cpp.
    Nie wiem o co chodzi. Błąd z tematu jest wskazany na konstruktor i destruktor Resource w pliku .cpp.
5

virtual int loadFromFile(std::wstring& name) musi być zdefiniowana jako metoda czysto wirtualna czyli virtual int loadFromFile(std::wstring& name)=0;, inaczej kompilator będzie szukał jej definicji w Resource.cpp. Aa no i desktruktor ~Model musi być wirtualny i zdefiniowany.

1 użytkowników online, w tym zalogowanych: 0, gości: 1