Возможный дубликат:
Что такое неопределенная ссылка / неразрешенная внешняя ошибка символа и как ее исправить?
У меня есть некоторый опыт работы с 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
Вы объявили деструктор, но не определили его. Измените объявление на:
virtual ~Force() {}
определить это, чтобы ничего не делать.
Вы также хотите сделать все функции в абстрактном интерфейсе чисто виртуальный, в противном случае они также должны быть определены:
virtual VECTOR eval(VECTOR x, double t) = 0;
Других решений пока нет …