'메소드포인터'에 해당되는 글 1건

  1. 2008/09/11 클래스의 메소드에 대한 포인터넘기기.
분류없음2008/09/11 20:32

poco library를 살펴보다가, 좋은 아이디어가 있어서, 남긴다.

C에서의 함수포인터 처럼, C++객체의 메소드를 포인터로 넘길 수 없을까? 라는 생각을 하고 있었는데,
그것에 대한 어느정도의 해답이 된 것 같다.

객체 내에 static으로 구현된 멤버 메소드는 그냥 함수포인터 처럼 넘기는 것이 가능하다.
그렇지 않고, static이 아닌 public으로 되어있는 멤버에 대한 포인터를 넘기는 방법을 어떻게 될까?

이거.. 나만 모르고 있었던 건가 --;;.......

편의상 인라인으로 처리한다..


#include <iostream>
using namespace std;

class MyObject
{
public:
    MyObject(){};
    ~MyObject(){};
public:
    void callback()
    {
        cout << "call me" << endl;
     }
};

class JHObject
{
public:
    JHObject(){};
    ~JHObject(){};
public:
    void run(MyObject* obj, void (MyObject::*pMethod)())
    {
          (obj->*pMethod)();
    }
};

   
int main()
{
    MyObject my;
    JHObject jh;
    jh.run(&my, &MyObject::callback);
    return 0;
}



간단했다.. 역시 알면 간단, 모르면 -_- 안드로메다..;;
객체에대한 메서드를 포인터로 넘길때에는 그 메서드를 호출할 객체에 대한 포인터도
함께 넘겨야 했던 것이다...

 

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 강지훈