Bonjour à tous,
Aujourd'hui j'ai appris qu'on ne pouvait pas faire ça :
Et je dois dire que ça me laisse un peu sur le cul...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class Mother { public: void setAttr (const Mother& obj) {this->attr = obj.attr;} protected: int attr; }; class Daughter: public Mother { int getAttr () {return this->attr;} void setAttr (const Mother& obj) {this->attr = obj.attr;} };
En effet, à l'intérieur d'une classe, on peut accéder aux attribut privés d'un objet tiers si celui-ci est du type de la dite classe.
Jusqu'ici tout va bien.
Et logiquement je pensais donc qu'a l'intérieur d'une classe dérivée, on pouvait accéder aux attributs protected des objets qui étaient de type des classes mères.
Mais en fait il n'en est rien...
J'aimerais savoir s'il y a une raison à cela ?
Apparemment ca serait la faute aux inavariants... mais ça ne m'éclaire pas beaucoup étant donné que je sais à peine ce que c'est.
Si vous aviez des explications ou des liens la dessus, ça m'intéresse fortement.
Merci beaucoup.
Partager