Duplicata possible:
Qu'est-ce qu'une erreur de référence non définie/symbole externe non résolu et comment puis-je la corriger?
J'ai une certaine expérience avec Java et je suis en train de suivre un cours C++. Je voulais essayer d'écrire une interface, mais j'ai rencontré des problèmes avec des destructeurs que je n'ai pas pu résoudre, même avec l'aide sur Internet ... Voici mon code:
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;
};
J'ai essayé de déclarer un destructeur virtuel pour la classe de base et un non-virtuel pour la classe dérivée, mais j'obtiens une erreur disant "référence non définie à` Force :: ~ Force () '". Qu'est-ce que cela signifie et comment puis-je y remédier?
Pardonnez-moi si c'est une question idiote!
Merci beaucoup pour votre aide, noctilux
Vous avez déclaré le destructeur, mais vous ne l'avez pas défini. Remplacez la déclaration par:
virtual ~Force() {}
le définir pour ne rien faire.
Vous souhaitez également créer toutes les fonctions dans l'interface abstraite pure virtual, sinon elles devront également être définies:
virtual VECTOR eval(VECTOR x, double t) = 0;