http://www.newty.de/fpt/index.html
windows 기반의 c++에서는
[CODE type=c++]
int (CFunc::*func)( int, int );
func = CFunc::GetArea;
CFunc A;
(A.*func)( x, y );
[/CODE]
[출처]
http://izeph.com/tt/blog/155
위 코드 처럼 Class의 맴버 메소드를 함수포인터로 사용할 수 있지만,
unix 기반에서는 사용 할 수가 없다.
unix 기반에서 사용하려면,
[CODE type=c++]
class TClassA
{
public:
void Display(const char* text) { cout << text << endl; };
static void Wrapper_To_Call_Display(void* pt2Object, char* text);
};
void TClassA::Wrapper_To_Call_Display(void* pt2Object, char* string)
{
TClassA* mySelf = (TClassA*) pt2Object;
mySelf->Display(string);
};
void DoItA(void* pt2Object, void (*pt2Function)(void* pt2Object, char* text))
{
pt2Function(pt2Object, "hi, i'm calling back using a argument ;-)"); // make callback
};
void Callback_Using_Argument()
{
TClassA objA;
DoItA((void*) &objA, TClassA::Wrapper_To_Call_Display);
}
[/CODE]
[출처]
http://www.newty.de/fpt/callback.html#member
이렇게 래퍼를 한번 거쳐 사용해야 한다.
windows 기반의 c++에서는
[CODE type=c++]
int (CFunc::*func)( int, int );
func = CFunc::GetArea;
CFunc A;
(A.*func)( x, y );
[/CODE]
[출처]
http://izeph.com/tt/blog/155
위 코드 처럼 Class의 맴버 메소드를 함수포인터로 사용할 수 있지만,
unix 기반에서는 사용 할 수가 없다.
unix 기반에서 사용하려면,
[CODE type=c++]
class TClassA
{
public:
void Display(const char* text) { cout << text << endl; };
static void Wrapper_To_Call_Display(void* pt2Object, char* text);
};
void TClassA::Wrapper_To_Call_Display(void* pt2Object, char* string)
{
TClassA* mySelf = (TClassA*) pt2Object;
mySelf->Display(string);
};
void DoItA(void* pt2Object, void (*pt2Function)(void* pt2Object, char* text))
{
pt2Function(pt2Object, "hi, i'm calling back using a argument ;-)"); // make callback
};
void Callback_Using_Argument()
{
TClassA objA;
DoItA((void*) &objA, TClassA::Wrapper_To_Call_Display);
}
[/CODE]
[출처]
http://www.newty.de/fpt/callback.html#member
이렇게 래퍼를 한번 거쳐 사용해야 한다.
반응형
'Dev > C, C++' 카테고리의 다른 글
http socket client (0) | 2006.11.23 |
---|---|
유용한 소켓 강좌 (0) | 2006.09.20 |
UTF-8 을 EUC-KR 로 변환 (0) | 2006.09.04 |
MFC용 ADO클래스 (버전업) (2) | 2006.07.24 |
소스상에서 lib링크 하기 (0) | 2006.07.07 |