mais je voulais savoir pourquoi les gens disent que ce mot clef est mal ?
Les gens qui disent ca n'ont pas compris l'utilite du mot cle. J'imagine qu'il voit friend comme un moyen de casser les abstractions et encapsulation qui sont considere de bonne pratique en programmation objet. Si tu utilises friend parceque, a ce truc est private et ca me fait chier, donc je vais mettre un friend, alors je suis d'accord c'est une mauvaise utilisation.
friend est vraiment dans le langage pour permettre de contourner les abstractions dans des cas ponctuel ou ca a vraiment du sens. Le cas que tu presentes est convaincant pour moi. Tu veux une fonction qui ne soit appellable que d'un seul objet en particulier, c'est exactement a ca que friend sert.
Typiquement friend en C++ sert la ou en java on utiliserait l'absence d'attribut de visibilite (ce qui rends la fonction ou la variable accessible par n'importe quelle objet du meme package). En d'autre terme, ca note clairement que les deux classes sont inter dependente dans leurs implementation. Personnellement, je ne vois pas ca comme un probleme tant qu'on ne s'en sert pas n'importe comment.