¸â¹ö ÇÔ¼ö Æ÷ÀÎÅÍ3

À̹øÀå¿¡¼­´Â Ãß»ó º£À̽º Ŭ·¡½º¸¦ ÅëÇÏ¿© Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö Æ÷ÀÎÅÍ¿Í Å¬·¡½ºÀÇ °´Ã¼¸¦ ÀúÀåÇÏ¿© ½ÇÇົ´Ù.

class IFunctionImp

{

public:

    virtual void Process() = 0;

};

 

template<class T>

class FunctionImp : public IFunctionImp

{

public:

    typedef void (T::*Callback)();

 

    FunctionImp(T * obj, Callback callback) :  m_pOobj(obj), m_callback(callback)

    {

    }

 

    void Process()

    {

        (m_pOobj->*m_callback)();

    }

 

private:

    T * m_pOobj;

    Callback m_callback;

};

FunctionImp Ŭ·¡½º´Â IFuntionImp Ãß»ó Ŭ·¡½º(ÀÎÅÍÆäÀ̽º)¸¦ »ó¼Ó ¹Þ´Â´Ù.
FunctionImp »ý¼º½Ã °´Ã¼¿Í Äݹé ÇÔ¼ö¸¦ ³Ñ°ÜÁØ´Ù.

void main()

{

  Lion        lion;

  Tiger        tiger;

 

  FunctionImp<Lion> lion_run(&lion, &Lion::Run);

  FunctionImp<Tiger> tiger_idle(&tiger, &Tiger::Idle);

 

  lion_run.Process();

  tiger_idle.Process();

 

  IFunctionImp* pkImp = NULL;

  pkImp = &tiger_idle;

  pkImp->Process();

}

FunctionImp::Process()·Î ÄݹéÇÔ¼ö¸¦ ½ÇÇà ÇÑ´Ù.

 

¼Ò½º : CmdTable2.cpp

ÂüÁ¶:

http://blog.naver.com/blueslame/110003931710

http://blog.naver.com/drrich?Redirect=Log&logNo=20024688910

http://gamepro.tistory.com/408

ÂüÁ¶ ¿øº»:

http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNo=20&no=7301&ref=7301

http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNo=20&no=7312&ref=7312