Problem mit Klasse
-
#ifndef XFORM_H #define XFORM_H namespace sg { class XForm { protected: float array[16]; public: XForm(); virtual ~XForm(); }; } #endif // XFORM_Hdie headerdatei
#include "xform.h" // PUBLIC IDENTITY sg::XForm::XForm() { for(int i=0; i< 16; i++) { array[i] = 0; if(i % 5 == 0) { array[i] = 1; } } }Ergebnis:
undefined reference to `vtable for sg::XForm' ld returned -1ich hatte schonmal so ein ähnliches probel, welches aber ganz schnell gelöst war aber keine ahnung mehr wie...
was mach ich falsch?
-
Heißer Tipp: Google kann bei obskuren Fehlermeldungen sehr gut helfen, so auch bei dieser:
-
shisha schrieb:
Ergebnis:
undefined reference to `vtable for sg::XForm' ld returned -1Du hast den virtuellen Destruktor nur deklariert aber nicht definiert. Du kannst den Destruktor auch abstrakt ("pur virtuell") machen, brauchst aber immer noch eine Definition. Das ist bei Destruktoren nunmal so.
class abstrakt { public: virtual int mach_etwas_1() const = 0; // <-- pur virtuell virtual void mach_etwas_2() = 0; // <-- pur virtuell virtual ~abstrakt() {} // <-- virtuell + Inline-DEFINition };Du kannst auch etwas mehr über Dein Design verraten. Das lässt sich eventuell verbessern.