c++ - “Referencia indefinida” al destructor de la clase de la base virtual
abstract-class undefined-reference (1)
Posible duplicado:
¿Qué es una referencia indefinida / error de símbolo externo no resuelto y cómo puedo solucionarlo?
Tengo algo de experiencia con Java y ahora estoy haciendo un curso de C ++. Quería intentar escribir una interfaz, pero he tenido algunos problemas con los destructores que no he podido resolver, incluso con la ayuda en Internet ... Aquí está mi código:
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;
};
He intentado declarar un destructor virtual para la clase base y uno no virtual para la clase derivada, pero aparece un error que dice "referencia indefinida a` Force :: ~ Force () ''". ¿Qué significa y cómo puedo solucionarlo?
Perdóname si esta es una pregunta tonta!
Muchas gracias por tu ayuda, noctilux.
Has declarado el destructor, pero no lo has definido. Cambie la declaración a:
virtual ~Force() {}
Definirlo para no hacer nada.
También desea que todas las funciones de la interfaz abstracta sean simplemente virtuales , de lo contrario, también deberán definirse:
virtual VECTOR eval(VECTOR x, double t) = 0;