J'ai un fichier d'en-tête qui utilise une fonction virtuelle.Redéfinir les fonctions virtuelles entre les fichiers d'en-tête en C++
Ceci est déclaré et défini:
#ifndef HeaderH
#define HeaderH
class Base {
<some code>
public:virtual int checkVal(int& val) { return val;}
};
#endif
J'ai un autre fichier d'en-tête qui déclare certaines fonctions, et hérite de cet en-tête de base.
Enfin, j'ai l'implémentation de ce fichier d'en-tête dans un autre fichier .cpp: Je souhaite surcharger la fonction virtuelle checkVal dans mon implémentation ici, mais j'obtiens toujours une erreur de redéfinition.
int Base::checkVal(int& value)
{
if(value == 0)
value = 10;
return value;
}
Y a-t-il quelque chose que je devrais inclure dans mon fichier d'en-tête qui remplacera la fonction virtuelle de base?
Je pense que lorsque vous dites que vous voulez remplacer la base, vous voulez créer une implémentation spécifique pour votre classe enfant (celle définie dans le deuxième en-tête) changez en int Child :: check (...) –