我将CTypedPtrList转换为指向对象的指针CArray。
为此,我在下面添加了代码。
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。
答案 0 :(得分:0)
您可以这样做:
qsort(static_cast<void*>(&arr[0]), arr.GetSize(), sizeof(CMyList*), CompareFunction);
其中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/