Bonjour,
Même avec #include <iostream> et using namespace std;.
J'ai déjà compilé avec codeBlock plusieurs programmes et il n'y avait pas de problème avec le std::cout ou cout seuls.
L'ajout des pointeurs aurai-il un lien ....
voici le code très simple;
Merci
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
42
43
44
45
46
47
48
49
50
51
52
53
54 #include <iostream> using namespace std; class Dog { public: int run(int i) const { //cout << "court\n"; return i; } int eat(int i) const { // cout << "mange\n"; return i; } int sleep(int i) const { // cout << "ZZZ\n"; return i; } typedef int (Dog::*PMF)(int) const; // l'opérateur->* doit retourner un objet // ayant un operator(): class FunctionObject { Dog* ptr; PMF pmem; public: // Enregistrer le pointeur sur objet et le pointeur sur membre FunctionObject(Dog* wp, PMF pmf) : ptr(wp), pmem(pmf) { // cout << "constructeur FunctionObject\n"; } // Faire l'appel en utilisant le pointeur sur objet // et le pointeur membre int operator()(int i) const { // cout << "FunctionObject::operator()\n"; return (ptr->*pmem)(i); // Faire l'appel } }; FunctionObject operator->*(PMF pmf) { // cout << "operator->*" << endl; return FunctionObject(this, pmf); } }; int main() { Dog w; Dog::PMF pmf = &Dog::run; int nbr; cout << (w->*pmf)(1) << endl; pmf = &Dog::sleep; cout << (w->*pmf)(2) << endl; pmf = &Dog::eat; cout << (w->*pmf)(3) << endl; } ///:~
Partager