Bonjour,

Admettons qu'on ait une classe A qui a une sémantique de valeur (value semantic). Pas de destructeur virtuel, pas fait pour être dérivé.

Un certain nombre d’opérations doivent agir sur les instances de A et nécessitent d'accéder aux membres privés.
On va naturellement penser à ajouter des méthodes à cette classe:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct A { // exemple fictif
  //.. ctors, assignment ops etc
 
  int method1(); // série de méthodes publiques
  int method2();
  int method3();
  //..
private:
  int i, j;
};
 
// utilisation 
A a;
a.method1();
a.method2();
Problème: Parce que A est vraiment utile (penser au type int, même si j’exagère rassurez-vous) et qu'il y a toujours plus de méthodes à ajouter (car potentiellement intéressantes), on se retrouve avec une classe dont l'interface publique est disproportionnée.

Solution: Tailler dans les méthodes et passer par des fonctions libres. Idéalement ces fonctions sont chargées à la demande par l'utilisateur (des fichiers de header distincts).

Problème: Quid de l’accès aux membres privés?

Question: Quels design, technique, idiome adopteriez-vous afin de remédier à ce problème? Si tant est que le problème fut le bon..