"неопределенная ссылка" на деструктор виртуального базового класса

Возможный дубликат:
Что такое неопределенная ссылка/неразрешенная ошибка внешнего символа и как ее исправить?

У меня есть некоторый опыт работы с 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

Ответ 1

Вы объявили деструктор, но не определили его. Измените объявление на:

virtual ~Force() {}

чтобы определить его, чтобы ничего не делать.

Вы также хотите сделать все функции абстрактного интерфейса чисто виртуальными, иначе они также должны быть определены:

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