virtuelle Funktion in Konstruktor bring Linkerfehlermeldung
-
Huhu
Meine Basisklasse:
class BASIS
{
protected:
virtual void Initialize (int iMax) = 0;public:
BASIS (int iMax) { Initialize (iMax); }
}Meine abgeleitete Klasse:
class ABGELEITET : public BASIS
{
protected:
virtual void Initialize (int iMax) { ...bla... }public:
ABGELEITET (int iMax) : BASIS (iMax) { ...bla...}
}Meine Basisklasse und deren Funktionen sind in einer eigenen Bibliothek definiert. Aber theoretisch sollte das keinen Einfluss haben.
Nur dass mein Linker mir immer meldet, "Initialize" sei ein nichtaufgelöstes Symbol, quasi kann er die Funktion nicht finden.Aber wo ist das Problem? Die Funktion ist als rein virtuell markiert und wird in meinem Programm überschrieben, sollte also auch vom Linker gefunden werden. Ich befürchte, dass es doch damit zu tun hat, dass die Basisklasse in einer externen Bibliothek definiert ist.
Kann ich dem Linker irgendeinen Tip geben, dass die Funktion woanders zu suchen ist?
Jan.
-
Dein Problem wird wunderbar durch das Thema des Threads beschrieben: Im Konstruktor gibt es keine Virtualität.
Siehe auch hier (mit Lösung): rein virtuelle Funktion - Nicht aufgeloestes externes Symbol