Я написал небольшую программу, где я пытаюсь передать указатель на функцию-член класса для другой функции. Можете ли вы, пожалуйста, помочь мне и где я ошибаюсь.?Передача указателя на функцию класса как параметр
#include<iostream>
using namespace std;
class test{
public:
typedef void (*callback_func_ptr)();
callback_func_ptr cb_func;
void get_pc();
void set_cb_ptr(void * ptr);
void call_cb_func();
};
void test::get_pc(){
cout << "PC" << endl;
}
void test::set_cb_ptr(void *ptr){
cb_func = (test::callback_func_ptr)ptr;
}
void test::call_cb_func(){
cb_func();
}
int main(){
test t1;
t1.set_cb_ptr((void *)(&t1.get_pc));
return 0;
}
При попытке его скомпилировать, я получаю следующее сообщение об ошибке.
error C2276: '&' : illegal operation on bound member function expression
Я всегда нахожу http://www.newty.de/fpt/index.html очень полезным. – arne
Функции-члены не являются функциями. Вам нужен тип 'void (test :: *) (void *)' ... –
Kerrek SB прав. Однако, если вы намереваетесь вызывать одного и того же члена для разных классов и экземпляров, вы должны думать о наследовании и виртуальных машинах ... –