Voilà, j'ai réussi à résoudre un problème d'amitié (non, je n'écris pas ma bio, je vous parle de class friend) d'une façon que je trouve relativement propre et que j'aimerais soumettre à vos critiques.
J'ai au départ un certain nombres de classes, disons A, B, filleDeB_1, filleDeB_2, etc.
La class B défini une fonction virtuelle maFonction destiné être appellé par A.
A contient x objets de la class abstraite B (qui sont en faites instanciés par des objets des classes dérivant de B).
Les class filleDeB_1, filleDeB_2, etc. héritent de B et doivent accéder à des membres privés de A pour maFonction.
Aucune autre classe que A ne peut instancier des objets de classe B ou de ses classes dérivées (les classes B & filles sont à l'usage exclussif de A).
A n'a pas à connaître et déclarer comme amies les classes fille de B.
Donc le problème est là, les filles de B ne sont pas amies de A mais doivent accéder à ses membres privés.
Ma solution :
Pour A :
Déclarer B comme amie.
Pour B :
Déclarer B comme amie de A.
Déclarer comme membres protégés en B toutes des références vers les membres privées de A que les filles de B devront accéder.
Déclarer le constructeur de B comme protégé.
pour les filles de B :
Déclarer A comme amie.
Accéder aux membres privées de A par les référence en B.
Déclarer le constructeur privé.
voilà, je peux déclarer autant de fille à B que je veux, sans jamais devoir changer une ligne de code en A ou en B, tout en ayant accès aux membres privés de A qu'il me faut.
(Moralité : vive java qui permet l'accès aux données privées de la classe conteneur par ses classes internes)
Partager