C++ : attributs hérités non accessibles
Résolu/Fermé2 réponses
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
13 juin 2012 à 11:27
13 juin 2012 à 11:27
Salut.
val1 et val2 sont des variables de la classe mère. Normalement, elles devraient être initialisées par le constructeur de la classe mère:
Tu peux essayer en spécifiant bien la portée :
Je pense qu'une fois encore la réponse est donnée par le compilateur, qui en général suit les spécifications du langages :
val1 n'est ni un membre de donnée non statique, ni une classe de base de la classe OP_Plus Ce que j'interprète dans l'autre sens, que les seuls variables que tu peux initialisé ainsi dans le constructeur sont soit un membre de donnée non statique soit une classe de base (une classe mère) et rien d'autre.
val1 et val2 sont des variables de la classe mère. Normalement, elles devraient être initialisées par le constructeur de la classe mère:
OP_Plus(Expression * valA,Expression * valB): OperationBinaire(valA,valB){}je pense que la notation que tu utilises est réservé aux données membres et non hérité (à vérifier tout de même).
Tu peux essayer en spécifiant bien la portée :
OP_Plus(Expression * valA,Expression * valB):OperationBinaire::val1(valA),OperationBinaire::val2(valB){}sans garantie. Mais ce qui devrait fonctionner (sinon, il y a un problème) :
P_Plus(Expression * valA,Expression * valB){val1=valA;val2=valB;}
Je pense qu'une fois encore la réponse est donnée par le compilateur, qui en général suit les spécifications du langages :
val1 n'est ni un membre de donnée non statique, ni une classe de base de la classe OP_Plus Ce que j'interprète dans l'autre sens, que les seuls variables que tu peux initialisé ainsi dans le constructeur sont soit un membre de donnée non statique soit une classe de base (une classe mère) et rien d'autre.