J'essaie d'utiliser des classes imbriquées à la place de l'héritage multiple. Je suis les recommandations du livre mais je continue à obtenir une erreur dans le constructeur. Fondamentalement, la personne est le grand-père, l'étudiant et l'employé sont les parents et l'assistant d'enseignement est l'enfant. TeachingAssistant aura une classe imbriquée qui aura référence à sa classe externe, mais quand j'utilise le code du livre que j'obtenir deux erreursUtilisation de classes imbriquées au lieu d'héritage multiple, C++
Je reçois l'erreur
Erreur 1 * "Aucun constructeur correspondant pour l'initialisation de TeachingAssistant :: EmployeePart »
et cette erreur
erreur 2 "hors de la définition de la ligne de 'EmployeePart' ne correspond à aucune déclaration 'TeachingAssistant :: EmployeePart'"
Voici le code:
class TeachingAssistant : public Student
{
public:
TeachingAssistant();
private:
class EmployeePart;
EmployeePart* employee_ptr;
};
class TeachingAssistant::EmployeePart : public Employee
{
public:
EmployeePart(TeachingAssistant&);
private:
TeachingAssistant* ta_part; // Allows access back to outer class
};
Erreur 1 est ici dans ce constructeur
TeachingAssistant::TeachingAssistant()
{
employee_ptr = new EmployeePart(this); // Pass pointer to implicit parameter
}
Erreur 2 est ici
TeachingAssistant::EmployeePart::EmployeePart(TeachingAssistant* taval)
: ta_part(taval) {}
Pourquoi ces erreurs pop-up si je fournirai la constructeurs?
'(* TeachingAssistant Taval)' est pas la même signature que dans la déclaration 'EmployeePart (TeachingAssistant &);'. –
Avez-vous essayé de définir la construction par défaut 'EmployeePart()' pour corriger l'erreur 1? – Artwo
Je reçois toujours l'erreur si j'utilise le constructeur par défaut – user2076774