请问:
struct stAni{
GBitmapStatic* m_pBitmap;
string m_strName;
bool operator < (const stAni& right) { return (m_strName < right.m_strName); }
bool operator > (const stAni& right) { return (m_strName > right.m_strName); }
bool operator == (const stAni& right) { return (m_strName == right.m_strName); }
};list中是这样的结构
为什么不能排序?使用m_listFrame.sort(); 没有效果~其中:list<stAni* > m_listFrame那么如何排序?list为stl中的#include <list>
编译器为vc6/stl为自带的pjstl
struct stAni{
GBitmapStatic* m_pBitmap;
string m_strName;
bool operator < (const stAni& right) { return (m_strName < right.m_strName); }
bool operator > (const stAni& right) { return (m_strName > right.m_strName); }
bool operator == (const stAni& right) { return (m_strName == right.m_strName); }
};list中是这样的结构
为什么不能排序?使用m_listFrame.sort(); 没有效果~其中:list<stAni* > m_listFrame那么如何排序?list为stl中的#include <list>
编译器为vc6/stl为自带的pjstl
list<stAni*> m_listFrame
list的排序是针对它的模板参数来的,因此,你的排序其实对指针进行排序,因此,结果当然不是你所想象的了
一种方式是使用list<stAni>来定义,还有一种VC6无法直接,只有VC7以上的版本支持,就是成员函数的偏特化,定义一个函数,针对stAni*进行比较。至于如何做,可以参看一下C++标准方面的书b