일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 서치아이
- 맞고게임
- 포커
- 판매
- 옥션해킹
- 프로그램 외주
- 윈윈전략
- 온라인게임
- 게임 개발
- 고스톱
- 틀린그림찾기
- 보드게임
- 써치아이
- 카일레라
- 티스토리 초대장
- 영어단어
- 프로그램 개발
- 포커게임
- 영어단어게임
- 맞고
- 홀뎀
- 상호링크
- 옥션소송
- MAME
- 카일레라서버
- 윈윈
- Mame32
- holdem
- 틀린그림 찾기
- 게임 외주
- Today
- Total
kyuseo의 게임 프로그래밍
CArray, CList, CMap :: GetSize() GetCount() MFC 템플릿 클래스의 규격화 방법 본문
개요.. |
MFC 6.0 에서 CArray, CList, CMap 클래스는 GetSize() 함수와 GetCount() 가 혼용으로 사용되어 불편한 경우가 많습니다.
이를 규격화하여 하나의 함수를 호출하는 방법을 알려드립니다.
방법 |
1. MFC 7.0 으로 업그레이드 합니다.
MFC 7.0 에서는 GetSize() 함수와 GetCount()함수를 모두 사용할 수 있습니다.
하지만 하나의 코드로 통일하여 사용하시기를 권장합니다. (Kyuseo 는 GetSize() 를 사용합니다.)
2. MFC 템플릿 클래스를 상속받아 함수를 만듭니다.
아래와 같이 CArray 를 상속받아 자신이 원하는 형태의 CArray 를 만들어 사용합니다.
/** @class CPArray @date 2006/3/3 @author 채경석(kyuseo99@chol.com, http://a.tk.co.kr) @brief */ template< class TYPE, class ARG_TYPE > class CPArray : public CArray< TYPE, ARG_TYPE > { public: using CArray< TYPE, ARG_TYPE >::GetCount;
INT_PTR GetCount( ARG_TYPE t, INT_PTR nStart = 0 ) const; ///< 주어진인자의총개수를구한다. INT_PTR Find( ARG_TYPE t, INT_PTR nStart = 0 ) const; ///< 주어진인자의첫번째것을찾는다. INT_PTR Delete( ARG_TYPE t, INT_PTR nStart = 0 ); ///< 주어진인자에해당하는것을지운다. (리턴:지워진개수)
TYPE& GetHead(); const TYPE& GetHead() const; TYPE& GetTail(); const TYPE& GetTail() const;
TYPE RemoveHead(); TYPE RemoveTail();
void Sort( BOOL bDesc = FALSE ); ///< 정렬한다. ( 해당TYPE 은>, <, == 가정의되어있어야한다. ) void Sort( int ( __cdecl *Compare )( const void *pArg1, const void *pArg2 ) ); ///< 외부함수로정렬한다. void Suffle( int nCount = 5 ); ///< 섞는다.
// 자체메모리할당된포인터전용함수 void DeleteRemovtAt( INT_PTR nIndex, INT_PTR nCount = 1 ); ///< delete 하고RemoveAt 한다. void DeleteRemoveAll(); ///< delete 하고RemoveAll 한다.
protected: static int CompareAsc( const void *pArg1, const void *pArg2 ); static int CompareDesc( const void *pArg1, const void *pArg2 ); }; |