class CTest
{
public:
  typedef void (CTest::*Fun)(void);

public:
  CTest(void)
  {

  }

  ~CTest(void)
  {

  }


public:
  void Render(void)
  {
       (this->*m_fpDraw)();
  }

  void Draw1(void)
  {
       printf("1\n");
  }

  void Draw2(void)
  {
       printf("2\n");
  }

public:
  void Set(int nSel)
  {
       if( 0 == nSel )
           m_fpDraw = &CTest::Draw1;
       else
           m_fpDraw = &CTest::Draw2;
  }

private:
  Fun        m_fpDraw;
};


...

main()
{
      CTest a;

      a.Set(0);
     a.Render();
     a.Set(1);
     a.Render();
}


참고사이트
http://www.gpgstudy.com/forum/viewtopic.php?t=16404

프로그래밍/일반  |  2007/09/17 15:22
이 글의 트랙백 주소 :: http://www.berrytm.com/tt/trackback/144
이름 ::   비밀번호 :: 홈페이지 :: 비밀글
등록