2013-04-13 3 views
0

я пытаюсь передать функцию-член класса в качестве параметров эта работа прекрасно, когда я использую ниже кодПередача какой-либо функции члена класса в качестве параметра

#include <stdio.h> 

class CMother; 
typedef int(CMother::*FuncPtr)(char* msg); 

class CMother 
{ 
protected: 
    void SetFunctionPtr(FuncPtr ptr) 
    { 
     //get ptr here 
    } 
}; 

class CSon : public CMother 
{ 
public: 
    CSon() 
    { 
     SetFunctionPtr((FuncPtr)MyFunc); 
    } 
private: 
    int MyFunc(char* msg) 
    { 
     printf(msg); 
     return 0; 
    } 
}; 

int main() 
{ 
    CSon son; 
    return 0; 
} 

, но когда я пытаюсь обобщить typedef раздел с шаблоном я получаю fatal error C1001: INTERNAL COMPILER ERROR полный код, который генерирует эта ошибка

#include <stdio.h> 

template<class T> 
typedef int(T::*FuncPtr)(char* msg); 

class CMother 
{ 
protected: 
    void SetFunctionPtr(FuncPtr ptr) 
    { 
     //get ptr here 
    } 
}; 

class CSon : public CMother 
{ 
public: 
    CSon() 
    { 
     SetFunctionPtr(MyFunc); 
    } 
private: 
    int MyFunc(char* msg) 
    { 
     printf(msg); 
     return 0; 
    } 
}; 

void mmm() 
{ 
    CSon son; 
} 

может ли один помочь мне с этим, пожалуйста.

+1

Я знаю, что это не то, о чем вы просите, но почему вы не можете использовать виртуальную функцию? –

ответ

1

C++ не имеют шаблонов typedefs до C++ 11.