Bonjour,
J'ai vu que si des propriétés et des méthodes étaient protected, on pouvait les utiliser dans les classes de filles.
Voici un code dans lequel j'ai enlevé les 1000 lignes qui fonctionnent pour ne laisser que celles qui me posent problème. J'accède sans problème à une propriété protected, à une méthode protected de la classe mère, mais je ne comprends pas pourquoi le mélange des deux est refusé.
//----- Zone -------
class Zone
{
protected:
char valeur;
Zone *objetSuivant;
void onClic(void){}
};
// ----- Radio -----
class Radio: public Zone
{
protected:
void test(void);
};
void Radio::test(void)
{
objetSuivant=this;
valeur=3; // OK
onClic(); // OK
objetSuivant->onClic(); // Erreur!
objetSuivant->valeur=2; // Erreur!
}
//------ Programme ----------
void setup(){}
void loop(){}
Et les messages d'erreur qui vont bien (passé en code pour respecter les alignements des ^~~~~~~~):
I:\Pecheux_Graph\Pecheux_Graph_VMA412_ST7781\erreur\erreur.ino: In member function 'void Radio::test()':
erreur:22:24: error: 'void Zone::onClic()' is protected within this context
objetSuivant->onClic(); // Erreur!
^
I:\Pecheux_Graph\Pecheux_Graph_VMA412_ST7781\erreur\erreur.ino:7:8: note: declared protected here
void onClic(void){}
^~~~~~
erreur:23:17: error: 'char Zone::valeur' is protected within this context
objetSuivant->valeur=2; // Erreur!
^~~~~~
I:\Pecheux_Graph\Pecheux_Graph_VMA412_ST7781\erreur\erreur.ino:5:8: note: declared protected here
char valeur;
^~~~~~
exit status 1
'void Zone::onClic()' is protected within this context
Je sais bien que tout est protected, mais Je suis sa fille!
Note en déclarant tout public, il n'y a pas d'erreur.
Merci