[SFML] undefined reference to vtable for... przy kompilacji klasy pochodnej Drawable i Transformable
Ostatnio zmodyfikowano 2014-08-01 08:57
kubawal Temat założony przez niniejszego użytkownika |
[SFML] undefined reference to vtable for... przy kompilacji klasy pochodnej Drawable i Transformable » 2014-07-31 13:59:16 Mam klasę która ma być 'czymś co łączy abstrakcyjną definicję kształtu z oknem', czyli po prostu wyświetla kształt zapisany w innej klasie. Jednak pojawia się dziwny problem: w logu wyświetla mi się debug/main.o: In function `ZN2ll6render12ShapeDisplayC1EPNS_4core6shapes5ShapeEN2sf5ColorES7_': C:\...\Programy\qt\build-llTest-Desktop_Qt_5_1_1_MinGW_32bit-Debug/../Llib/shapedisplay.h:37: undefined reference to `vtable for ll::render::ShapeDisplay' C:\Kuba(D)\Programy\qt\build-llTest-Desktop_Qt_5_1_1_MinGW_32bit-Debug/../Llib/shapedisplay.h:37: undefined reference to `vtable for ll::render::ShapeDisplay' debug/main.o: In function `ZN2ll6render12ShapeDisplayD1Ev': C:\...\Programy\qt\build-llTest-Desktop_Qt_5_1_1_MinGW_32bit-Debug/../Llib/shapedisplay.h:25: undefined reference to `vtable for ll::render::ShapeDisplay' C:\...\Programy\qt\build-llTest-Desktop_Qt_5_1_1_MinGW_32bit-Debug/../Llib/shapedisplay.h:25: undefined reference to `vtable for ll::render::ShapeDisplay' collect2.exe: error: ld returned 1 exit status
Co dziwniejsze, kod ten jest w dll'ce, a podczas kompilacji dll'ki kompilator nie ma żadnych zastrzeżeń. class ShapeDisplay : public Drawable , public Transformable { core::shapes::Shape * sh; Color fillColor, borderColor; mutable core::FloatRect aabb; mutable Transform old; void updateAABB() const; public: ShapeDisplay() : sh( NULL ) , fillColor( Color::Transparent ) , borderColor( Color::Black ) { } ShapeDisplay( core::shapes::Shape * sh, Color fillColor = Color::Transparent, Color borderColor = Color::Black ) : sh( sh ) , fillColor( fillColor ) , borderColor( borderColor ) { } virtual ~ShapeDisplay() { } void setShape( core::shapes::Shape * newsh ) { sh = newsh; } void setFillColor( Color c ) { assert( sh ); fillColor = c; } void setBorderColor( Color c ) { assert( sh ); borderColor = c; } core::FloatRect getGlobalBounds() const { if( !compareArray( getTransform().getMatrix(), old.getMatrix(), 4 * 4 ) ) { old = getTransform(); updateAABB(); } return aabb; } const core::shapes::Shape * getShape() const { return sh; } Color getFillColor() const { return fillColor; } Color getBorderColor() const { return borderColor; } virtual void draw( RenderTarget & target, RenderStates states ) const; };
void ShapeDisplay::updateAABB() const { }
void ShapeDisplay::draw( RenderTarget & target, RenderStates states ) const { }
|
|
unkn9wn |
» 2014-07-31 14:29:45 spróbuj skomentować destruktor # ahh rada na nic, kiedyś miałem z tym problem, lecz u Ciebie to nie tu pewnie |
|
Wrzud |
» 2014-07-31 14:37:00 Jak eksportujesz i importujesz klase? |
|
kubawal Temat założony przez niniejszego użytkownika |
» 2014-08-01 08:57:29 Faktycznie, zabrakło declspec'a. |
|
« 1 » |