std::cout codeblock même si je mets #include <iostream>
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:
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