2012-11-18 10 views
23

Mögliche Duplizieren:
What is an undefined reference/unresolved external symbol error and how do I fix it?"undefined reference" auf virtuelle Basisklasse destructor

Ich habe einige Erfahrung mit Java, und bin jetzt ein C++ Kurs zu tun. Ich wollte eine Schnittstelle, um versuchen zu schreiben, aber ich habe in einige Schwierigkeiten mit Destruktoren laufen, die ich nicht in der Lage zu lösen, auch mit der Hilfe über das Internet ... Hier ist mein Code:

class Force { 

    public: 

    virtual ~Force(); 
    virtual VECTOR eval(VECTOR x, double t); 

}; 

class InvSquare : public Force { 

    public: 

    InvSquare(double A) { 

     c = A; 

    } 

    ~InvSquare(){}; 

    VECTOR eval(VECTOR x, double t) { // omitted stuff } 

    private: 
    double c; 

}; 

ich versucht habe, um einen virtuellen Destruktor für die Basisklasse und einen nicht-virtuellen für die abgeleitete Klasse zu deklarieren, aber ich erhalte den Fehler "undefinierter Verweis auf Force :: ~ Force()". Was bedeutet es und wie kann ich es beheben?

Verzeihen Sie mir, wenn das eine dumme Frage ist!

Vielen Dank für Ihre Hilfe, Noctilux

Antwort

31

Sie haben die destructor deklariert, aber es ist nicht definiert. Ändern Sie die Deklaration zu:

zu definieren, um nichts zu tun.

Sie wollen auch alle Funktionen in der abstrakten Schnittstelle rein virtuelle machen, sonst werden sie auch definiert werden müssen:

virtual VECTOR eval(VECTOR x, double t) = 0; 
+0

Vielen Dank - das ist ein Problem weniger ... – noctilux