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

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

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

25

Решение

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

virtual ~Force() {}

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

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

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector