указатель на функцию-член на указатель на функцию?

Возможный дубликат:
Привести указатель на функцию-член к обычному указателю

есть несколько кодов

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'

подскажите пожалуйста как решить эту проблему?

1

Решение

Вы хотите сделать это

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);
}

Проверьте эта почта для получения дополнительной информации об указателях функций-членов.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]