Probleme avec les references
	
	
		Bonjour !
J'ai constate avec etonnement que ce code ne compilait pas
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 
 | class A
{
	public :
		A ( int a ) : m_a ( a ) {} ;
		int a() { return m_a ; } ;
	private :
		int m_a ;
};
 
class B
{
	public :
		int b ( int &x ) { return x*x ; } ;
};
 
 
int main ( int argc, char *argv[] )
{
	A a = A ( 5 ) ;
	B b ;
	b.b ( a.a() ) ;
	return 0 ;
} | 
 Pour contourner ce probleme, j'ai trouve 3 solutions, la premiere est de changer la classe A par
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 
 |  
class A
{
	public :
		A ( int a ) : m_a ( a ) {} ;
		int& a() { return m_a ; } ;
	private :
		int m_a ;
}; | 
 Sinon on peut modifier la classe B comme ceci
	Code:
	
| 12
 3
 4
 5
 6
 
 |  
class B
{
	public :
		int b ( int x ) { return x*x ; } ;
}; | 
 ou enfin rajouter une variable dans le main
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 
 |  
int main ( int argc, char *argv[] )
{
	A a = A ( 5 ) ;
	B b ;
        int i = a.a() ;
	b.b ( i ) ;
	return 0 ;
} | 
 Mais, si cette derniere modif marche, pourquoi la premiere version ne marche pas ?
EDIT : Fausse manip, le message est parti trop vite