사용자 도구

사이트 도구


kb:cppdelegate

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

kb:cppdelegate [2014/11/07 16:36] (현재)
줄 1: 줄 1:
 +====== C++ Delegate ======
 +콜백 함수 구현.
  
 +
 +====== 클래스 멤버 함수 콜백 ======
 +문법을 자꾸 까먹어 적어둔다.
 +
 +<code cpp>
 +class TestClass
 +{
 +private:
 +    typedef void (TestClass::​*PFN_CALLBACK)(int,​ int);
 +
 +    PFN_CALLBACK m_pfnCallbacks[3];​
 +
 +
 +public:
 +    TestClass()
 +    {
 +        m_pfnCallbacks[0] = &​TestClass::​FirstFunction;​
 +        m_pfnCallbacks[1] = &​TestClass::​SecondFunction;​
 +        m_pfnCallbacks[2] = &​TestClass::​ThirdFunction;​
 +    }
 +    ​
 +    void ExecRandom(int which)
 +    {
 +        int lparam = rand();
 +        int rparam = rand();
 +
 +        (this->​*m_pfnCallbacks[which])(lparam,​ rparam);
 +    }
 +
 +
 +private:
 +    void FirstFunction(int lparam, int rparam) { ... }
 +    void SecondFunction(int lparam, int rparam) { ... }
 +    void ThirdFunction(int lparam, int rparam) { ... }
 +};
 +
 +...
 +TestClass t;
 +t.ExecRandom(rand() % 3);
 +</​code>​
 +
 +
 +====== 링크 ======
 +  * [http://​www.ddj.com/​dept/​cpp/​184403746 | Generalized Function Pointers]
 +  * [[http://​www.codeproject.com/​cpp/​ImpossiblyFastCppDelegate.asp | The Impossibly Fast C++ Delegates]]
 +
 +----
 +  * see also [[Cpp|C++]],​ [[CallingConvention]]
kb/cppdelegate.txt · 마지막으로 수정됨: 2014/11/07 16:36 (바깥 편집)