Возможный дубликат:
Привести указатель на функцию-член к обычному указателю
есть несколько кодов
class TT {
public:
void set();
void par1(int, int);
void par2(double, double);
};
typedef void(*Ptr1)(TT &, int, int);
typedef void(*Ptr2)(TT &, double, double);
void hello(Ptr1, Ptr2){...}
void TT::set()
{
hello(&TT::par1, &TT::par2);
}
и ошибка показывает:
error C2664: 'hello' : cannot convert parameter 1 from 'void (__thiscall TT::* )(int,int)' to 'Ptr1'
подскажите пожалуйста как решить эту проблему?
Вы хотите сделать это
typedef void(TT::*Ptr1)(int, int);
typedef void(TT::*Ptr2)(double, double);
И исправить функцию привет, чтобы взять указатель на this
так как вам нужен указатель this для вызова функции объекта.
void hello(TT* obj,Ptr1 x, Ptr2 y){
(obj->*x)(1,2);
}
Проверьте эта почта для получения дополнительной информации об указателях функций-членов.
Других решений пока нет …