Undefined reference to `vtable for Resource`

Undefined reference to `vtable for Resource`
bajos
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:UwUdź
  • Postów:267
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.

Kopiuj
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();
}; 
Kopiuj
 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.

128 postów [25.06.2015r. 21:03]
edytowany 2x, ostatnio: bajos
several
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 5 godzin
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.


edytowany 1x, ostatnio: several

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.