Bonjour,

Dans le livre de Scott Meyers à l'item 26, on a le code suivant:

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
16
 
class B;//forward déclaration for class B
class A{
private:
	int o;
public:
 
	A(const B& X); //an A can be constructed from a B
};
 
class B{  
private:
		int o;
public:
	 operator A() const;//a B can be converted to an A
};
On voit que le constructeur par copie de A permet de construire un objet A a partir d'un objet B. Alors j'ai voulu définir ce constructeur de A
comme ceci:
mais bien sur, o étant privé, on ne peut pas accéder aux données membres de B dans une fonction de la classe A.

Je ne veux pas faire de classe dérivée, et déclarer les membres de B comme protected (ou l'inverse).

Alors y a t il un moyen pour acceder à l'élément o de l'objet-argument autrement que par un accesseur déclaré comme ceci dans la classe A:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
friend int getteur (const B& );
et défini comme ceci dans la classe B:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
int getteur(const B& X){return X.o;};
Merci