class function pointer

작성자

카테고리:

[code lang=”cpp”]

class IFunction
{
public:
IFunction() {}
virtual ~IFunction() {}

virtual void Run() = 0;
};

template<typename T>
class TFunction : public IFunction
{
public:
TFunction()
{
m_pObj=0;
}
TFunction(T* pObj, void (T::*pFunc)())
{
m_pObj=pObj;
m_pFunc=pFunc;
}
virtual ~TFunction()
{
}
void Run()
{
if(0!=m_pObj)
(m_pObj->*m_pFunc)();
}

private:
T* m_pObj;

void (T::*m_pFunc)();
};

class CApp
{
public:
CApp()
{
m_pfnCallBack = new TFunction<CApp>(this, &CApp::CallBack );
}
~CApp()
{
delete m_pfnCallBack;
}
void Run()
{
m_pfnCallBack->Run();
}
void CallBack()
{
puts("~~~~");
}

protected:
IFunction* m_pfnCallBack;
};

int main(int argc, char* argv[])
{
CApp app;
app.Run();
return 0;
}

[/code]

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다