소스 중에 이해가 안가는 부분이 있습니다.
글쓴이: nayana / 작성시간: 화, 2004/11/23 - 5:48오후
typedef BOOL ( xCBGPlayer::*FPTR_PacketProc )( xCPacket* pPacket ); static FPTR_PacketProc st_OFuncs[ _BGPACKET_MAX ]; #define DECLARE_PACKET_PROC( id ) BOOL xCBGPlayer::_On##id( xCPacket* pPacket )
이부분이 정확하게 이해가 안갑니다. _On##id 이부분은 토큰 기능중에 하나
라고 알고 있습니다. BOOL xCBGPlayer::_Onid 하고 똑같은걸로 알고있습니다. 나머지 위의 부분은 잘이해가 안됩니다. 그리고
( this->*xCBGPlayer::st_OFuncs[ wHeader ] )( pPacket )
이부분이 호출하니까...DECLARE_PACKET_PROC( id ) 가 호출됩니다.
이부분도 왜 이렇게 되는지 잘모르겠습니다.
이런형식의 간단한 예제나 설명 부탁 드리겠습니다.
Forums:
http://bbs.kldp.org/viewtopic.php?t=4704
http://bbs.kldp.org/viewtopic.php?t=47048&highlight=%23%23
같은 맥락으로 해석이 가능할것같네요. 패킷종류에 따른 핸들러 호출..
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
Re: 소스 중에 이해가 안가는 부분이 있습니다.
xCPacket*을 인자로 하고 BOOL을 반환하는 xCBGPlayer 클래스의 멤버 함수에
대한 포인터형 FPTR_PacketProc을 typedef 한 것입니다. 헥헥...
FPTR_PacketProc 형의 배열을 선언한 것입니다. st_OFuncs[i]는 그러한
함수를 가리킬 수 있죠.
만약
이런 멤버 함수가 있다면
이렇게 대입할 수 있습니다. 그리고
( this->*xCBGPlayer::st_OFuncs[ wHeader ] )( pPacket )
이렇게 함으로써 함수 포인터를 통해 this->f()를 호출하는 것이죠.
자세한 문법은 pointer to member function / pointer to member data를 참조하세요.
감사합니다.^^
감사합니다.^^
댓글 달기