[Pointeur de fonction membre] Erreur de compilation
Bonjour,
J'ai un petit souci avec le code suivant :
Code:
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:
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.