Я пытаюсь получить адрес функции-члена, но я не знаю, как это сделать. Я был бы признателен, если бы кто-нибудь мог сказать мне, что я делаю неправильно. Как вы можете увидеть в моем примере ниже, ни (длинный) & г, ни (длинный) & this-> г работа, и я не могу понять правильный синтаксис:этот адрес указатель и функция функции члена
/* 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();
}
Спасибо заранее!
Благодарим вас за ответ! Однако я до сих пор не работаю. Если бы я изменить строку
PR((long)&g);
в
PR((long)&test::g);
, она до сих пор не работает.
PR(&test::g);
работает в главной(), но не
PR((long)&test::g);
???
Я думаю, что у меня что-то не хватает. :(
Адрес не обязательно числа (так долго может быть недостаточно). Приведение в действие (void *) код потока затем просто распечатает адрес. –