35

重複の可能性:
未定義の参照/未解決の外部シンボル エラーとは何ですか? また、どのように修正すればよいですか?

私は 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()' への未定義の参照」というエラーが表示されます。それはどういう意味ですか、どうすれば修正できますか?

これがばかげた質問であれば、私を許してください!

お世話になりました、ノクティルクス

4

1 に答える 1

49

デストラクタを宣言しましたが、定義していません。宣言を次のように変更します。

virtual ~Force() {}

何もしないように定義します。

また、抽象インターフェイスのすべての関数をpure virtualにする必要があります。それ以外の場合は、それらも定義する必要があります。

virtual VECTOR eval(VECTOR x, double t) = 0;
于 2012-11-18T21:33:44.567 に答える