J'essaye d'obtenir l'adresse d'une fonction de membre, mais je ne sais pas comment. J'apprécierais que quelqu'un puisse me dire ce que je fais de mal. Comme vous pouvez le voir dans mon exemple ci-dessous, ni (long) & g ni (long) & this-> g travail et je ne peux pas comprendre la syntaxe correcte:cette adresse de pointeur et membre de fonction
/* Create a class that (redundantly) performs data member selection
and a member function call using the this keyword (which refers to the
address of the current object). */
#include<iostream>
using namespace std;
#define PR(STR) cout << #STR ": " << STR << endl;
class test
{
public:
int a, b;
int c[10];
void g();
};
void f()
{
cout << "calling f()" << endl;
}
void test::g()
{
this->a = 5;
PR((long)&a);
PR((long)&b);
PR((long)&this->b); // this-> is redundant
PR((long)&this->c); // = c[0]
PR((long)&this->c[1]);
PR((long)&f);
// PR((long)&g); // this doesn't work
// PR((long)&this->g); // neither does this
cout << endl;
}
int main()
{
test t;
t.g();
}
Merci à l'avance!
Merci pour votre réponse! Cependant, je n'arrive toujours pas à le faire fonctionner. Si je change la ligne
PR((long)&g);
à
PR((long)&test::g);
, il ne fonctionne toujours pas.
PR(&test::g);
œuvres en main(), mais pas
PR((long)&test::g);
???
Je pense qu'il me manque quelque chose. :(
L'adresse n'est pas nécessairement un numéro (il se peut que ce ne soit pas suffisant). Cast to (void *) le code du flux ne fera qu'imprimer l'adresse. –