C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[71346] Re:함수의 상속에 대해.. 조금 이상한게 있습니다(DXDU에서)
남병철.레조 [lezo] 3363 읽음    2014-05-21 15:15
추상 클래스 혹은 인터페이스 클래스를 만드는 이유는,
구현 클래스인 CAllocateHierarchy의 주요 메소드를 외부에서 사용하려는 것 입니다.
즉 다른 구현 클래스에서 인스턴스로 생성된 CAllocateHierarchy 메소드에 접근할 때
ID3DXAllocateHierarchy 타입의 포인터로 접근하게 됩니다.

브리지 패턴을 참고해 보셔도 도움 되겠네요.



정의는승리한다 님이 쓰신 글 :
: class CAllocateHierarchy : public ID3DXAllocateHierarchy
: {
: public:
:
:     STDMETHOD( CreateFrame )( LPCSTR Name, LPD3DXFRAME *ppNewFrame );
:     STDMETHOD( CreateMeshContainer )( THIS_
:         LPCSTR Name,
:         CONST D3DXMESHDATA *pMeshData,
:         CONST D3DXMATERIAL *pMaterials,
:         CONST D3DXEFFECTINSTANCE *pEffectInstances,
:         DWORD NumMaterials,
:         CONST DWORD *pAdjacency,
:         LPD3DXSKININFO pSkinInfo,
:         LPD3DXMESHCONTAINER *ppNewMeshContainer );
:     STDMETHOD( DestroyFrame )( THIS_ LPD3DXFRAME pFrameToFree );
:     STDMETHOD( DestroyMeshContainer )( THIS_ LPD3DXMESHCONTAINER pMeshContainerBase );
:
:     CAllocateHierarchy()
:     {
:     }
: };
:
: 이런 함수가 있습니다. 그리고 상속받을 ID3DXAllocateHierarchy 는
:
: #define DECLARE_INTERFACE(iface)                        interface DECLSPEC_NOVTABLE iface
: //위에꺼는 밑에 함수의 define...
: DECLARE_INTERFACE(ID3DXAllocateHierarchy)
: {
: STDMETHOD(CreateFrame)(THIS_ LPCSTR Name,
:                             LPD3DXFRAME *ppNewFrame) PURE;
:
: STDMETHOD(CreateMeshContainer)(THIS_
:         LPCSTR Name,
:         CONST D3DXMESHDATA *pMeshData,
:         CONST D3DXMATERIAL *pMaterials,
:         CONST D3DXEFFECTINSTANCE *pEffectInstances,
:         DWORD NumMaterials,
:         CONST DWORD *pAdjacency,
:         LPD3DXSKININFO pSkinInfo,
:         LPD3DXMESHCONTAINER *ppNewMeshContainer) PURE;
:
:
: STDMETHOD(DestroyFrame)(THIS_ LPD3DXFRAME pFrameToFree) PURE;
:
: STDMETHOD(DestroyMeshContainer)(THIS_ LPD3DXMESHCONTAINER pMeshContainerToFree) PURE;
:
: };
:
:
:
: 이렇습니다.
:
: STDMETHOD는 ()안에것을 virtual CALLBACK 함수로 만든다는 얘기 이구요..
:
: 근데 같은 내용을 상속 받는다는 뜻 아닌가요? 왜 저렇게 상속 받아야 하죠? 지우면 에러가 나더군요..
: 개발자 선후배님들 꼭좀 알려주세요!
:
:
: (소스는 Directx sdk의 스킨드매쉬 예제중 일부 입니다.)

+ -

관련 글 리스트
71326 함수의 상속에 대해.. 조금 이상한게 있습니다(DXDU에서) 정의는승리한다 3458 2014/05/17
71346     Re:함수의 상속에 대해.. 조금 이상한게 있습니다(DXDU에서) 남병철.레조 3363 2014/05/21
71361         답변 감사합니다. DXUT인데 DXDU라니... 그떄 정신이 없었는듯합니다 ㅎ 2730 2014/05/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.