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;

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;
 
} ///:~
Merci