请问:
    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

解决方案 »

  1.   

    因为你的定义是
    list<stAni*> m_listFrame
    list的排序是针对它的模板参数来的,因此,你的排序其实对指针进行排序,因此,结果当然不是你所想象的了
    一种方式是使用list<stAni>来定义,还有一种VC6无法直接,只有VC7以上的版本支持,就是成员函数的偏特化,定义一个函数,针对stAni*进行比较。至于如何做,可以参看一下C++标准方面的书b