2012-11-18 17 views
23

Powiel możliwe:
What is an undefined reference/unresolved external symbol error and how do I fix it?"niezdefiniowana odniesienia" do wirtualnej klasy bazowej destructor

Mam pewne doświadczenie z Java, i jestem teraz robi kurs C++. Chciałem spróbować napisać interfejs, ale mam napotkasz jakiś problem z destruktorów, których nie były w stanie rozwiązać, nawet z pomocą w Internecie ... Oto mój kod:

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; 

}; 

Próbowałem zadeklarować wirtualny destruktor dla klasy bazowej i nie-wirtualny dla klasy pochodnej, ale pojawia się komunikat "niezdefiniowane odwołanie do` Force :: ~ Force() "". Co to znaczy i jak mogę to naprawić?

Przebacz mi, jeśli to głupie pytanie!

Dziękuję bardzo za pomoc, NOCTILUX

Odpowiedz

31

pan ogłosił destruktor, ale nie definiuje go. Zmień deklarację na:

virtual ~Force() {} 

, aby zdefiniować to, aby nic nie robić.

także chcą, aby wszystkie funkcje w abstrakcyjnej interfejs pure virtual, w przeciwnym razie będą musiały zostać zdefiniowane zbyt:

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

Dziękuję bardzo - to jeden problem mniej ... – noctilux

Powiązane problemy