2012-11-18 15 views
23

可能重複:
What is an undefined reference/unresolved external symbol error and how do I fix it?「未定義的引用」 虛基類的析構

我有Java的一些經驗,和現在做一個C++課程。我想嘗試寫一個接口,但我遇到了一些麻煩與析構函數,我一直沒能解決,甚至在互聯網上的幫助...這裏是我的代碼:

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; 

}; 

我曾嘗試爲基類聲明一個虛擬析構函數,爲派生類聲明一個非虛擬析構函數,但是我得到一個錯誤,說「對Force ::〜Force()'的未定義引用」。這是什麼意思,我該如何解決?

原諒我,如果這是一個愚蠢的問題!

非常感謝您的幫助, NOCTILUX

回答

31

聲明瞭析構函數,但沒有定義它。更改聲明爲:

virtual ~Force() {} 

將其定義爲什麼都不做。

您也想使所有功能的抽象接口純虛,否則他們將需要過定義:

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

非常感謝你 - 這是一個問題少... – noctilux