Bonjour,

J'ai un petit souci avec 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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
 
using namespace std;
 
class Bug;
typedef void (Bug::*Method)(const char*);
 
#include <iostream>
 
using namespace std;
 
class Bug;
typedef void (Bug::*Method)(const char*);
 
class Bug
{
   public:
//   typedef void (Bug::*Method)(const char*);
 
   Method method;
 
   void echo (const char* str)
   {
      cout << str << endl;
   }
 
   Bug()
   {
      method = &Bug::echo;
      (this->*method)("Constructor");
   }
};
 
int main()
{
   Bug machin;
 
   machin.method = &Bug::echo;
   (machin.*method)("hello world");
   return 0;
}
A la compilation, j'ai droit au message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
bug.cxx: In function ‘int main()’:
bug.cxx:31: erreur: ‘method’ was not declared in this scope
Pour info, j'ai suivi les indications disponible dans ce cours C/C++.

Le problème est que je ne vois pas le problème ! Il n'arrive pas à accéder au membre method, comme si celui-ci était privé, mais ce n'est pas le cas, sinon la ligne précédente générerait également une erreur !

Je suis ouvert à toute suggestion.

Je vous remercie par avance de votre aide.