Constructeur par défaut pour une classe héritée
J'ai réduit mon problème à l'exemple de code suivant:
class pokemon{
public:
pokemon(int n);
};
class MewTwo : public pokemon {
public:
MewTwo(int n);
};
MewTwo::MewTwo(int n) {}
Qui produit une erreur:
no matching function for call pour
‘pokemon::pokemon()’
Ce que je pense est passe, c'est qu'un constructeur par défaut pour le pokemon est appelée lorsque j'essaie d'écrire le MewTwo constructeur, qui n'existe pas. Je suis relativement novice en C++, donc je suis juste deviner ici. Des idées?
Retenue: Fixe ne peut pas modifier ou ajouter des membres publics de la classe.
source d'informationauteur Coltin | 2010-12-04
Vous devez vous connecter pour publier un commentaire.
En fait ce que vous recherchez, c'est le membre de la liste d'initialisation. Changer votre hérité constructeur de la classe à la suivante:
Vous avez été correct dans l'identification de ce qui se passait. Fondamentalement, lorsque vous créez la classe héritée vous créez d'abord la classe de base et vous ne pouvez pas le faire parce qu'il n'y a pas de constructeur par défaut définis. Membre de l'initialisation des listes vous aider à obtenir autour de ça 🙂
Découvrez : http://www.cprogramming.com/tutorial/initialization-lists-c++.html pour plus d'exemples!
Essayez ceci :