Bonjour !
J'ai constate avec etonnement que ce code ne compilait pas
Pour contourner ce probleme, j'ai trouve 3 solutions, la premiere est de changer la classe A par
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
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 ; }
Sinon on peut modifier la classe B comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ; };
ou enfin rajouter une variable dans le main
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class B { public : int b ( int x ) { return x*x ; } ; };
Mais, si cette derniere modif marche, pourquoi la premiere version ne marche pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ; }
EDIT : Fausse manip, le message est parti trop vite
Partager