Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > указатель на метод класса


Автор: bel_nikita 16.2.2004, 18:21
Возможно ли такое, через шаблоны:
есть указатель на класс
есть указатель на метод класса
Но как вызвать функциюconfused.gif
Пример:
Код
template <typename T>
class cTplHdpService
{
public:
 cTplHdpService(){m_pCallBack=NULL;};
 ~cTplHdpService(){};
 
 void Register(T *Class,void (T::*method)(unsigned short, unsigned char *, int)){
   pClassCallBack=Class;// Получаю указатель на класс
   m_pCallBack=method;// Получаю указатель на метод класса
 };
 
 void ProcessDsp(unsigned short Command, unsigned char *pData, int iLen){
   //pClassCallBack->*m_pCallBack(Command, *pData, iLen);// А вот здесь проблеммаconfused.gifconfused.gif?
 }
 
protected:
private:
 void (T::*m_pCallBack)(unsigned short, unsigned char *, int);
 T *pClassCallBack;
};

class MyExample
{
public:
 MyExample(){};
 ~MyExample(){};
 void Processing(unsigned short Command, unsigned char *pData, int iLen){
   printf("\nMyExample");
 };
protected:
private:
};

int main(int argc, char* argv[])
{
printf("Hello World!\n");

 MyExample *pMyExample=new MyExample();

 cTplHdpService<MyExample> *pTPL=new cTplHdpService<MyExample>();
 void (MyExample::*method)(unsigned short, unsigned char *, int)=&MyExample::Processing;
 pTPL->Register(pMyExample,method);
 pTPL->ProcessDsp(1,(unsigned char *)2,3);
return 0;
}

Автор: mr.DUDA 17.2.2004, 00:43
просто ты забыл ещё одни скобки smile.gif
Цитата
(pClassCallBack->*m_pCallBack)(Command, pData, iLen);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)