Probleme avec les references
Bonjour !
J'ai constate avec etonnement que ce code ne compilait pas
Code:
1 2 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:
1 2 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:
1 2 3 4 5 6
|
class B
{
public :
int b ( int x ) { return x*x ; } ;
}; |
ou enfin rajouter une variable dans le main
Code:
1 2 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