2017-08-30 53 views
0

CTypedPtrListをオブジェクトへのポインタのCArrayに変換しました。qsortを使用してCTypedPtrListをソートする方法は?

このため、以下のコードを追加しました。

typedef CTypedPtrList<CPtrList, CMyList*> CTagInfoList; 

CMyInfoList* myList; 

CArray<CMyList* ,CMyList*> arr; 

,, 

,, 

POSITION pos = myList->GetHeadPosition(); 
while(pos != NULL){ 

CMyList* pObj = (CMyList*)myList->GetNext(pos); 

arr.Add(pObj); 

} 

オブジェクトへのポインタのCArrayを使用してqsortを呼び出す方法。

+1

可能な複製を[ユーザー定義型のCArrayをどのように並べ替えるのですか?](https://stackoverflow.com/questions/244487/how-do-i-sort-a-carray-of-a-user-defined-type) –

+1

IされているMFCを使用して20年間のプログラミングを行います。私はMicrosoftのコンテナを一度も使用していません。あなたの仕事のために[C++標準ライブラリ](https://en.wikipedia.org/wiki/C%2B%2B_Standard_Library)に移動することを検討してください。 – lakeweb

答えて

0

あなたはこのような何か行うことができますは、compareFunctionは静的メソッドである

qsort(static_cast<void*>(&arr[0]), arr.GetSize(), sizeof(CMyList*), CompareFunction); 

:また

// header: 
static int CompareFunction(const void* a, const void* b); 
// cpp 

int CYourClass::CompareFunction(const void* a, const void* b) 
{ 
CMyList* pA = static_cast<CMyList*>(a); 
CMyList* pB = static_cast<CMyList*>(b); 
return pA->Compare(*pB); // Compare is a comparision CMyList* criteria 
} 

は、あなたがのqsort参照の表情取る:のhttp://www.cplusplus.com/reference/cstdlib/qsort/

関連する問題