Есть следующие классы:
class CMyObj
{
public:
CMyObj(void);
CMyObj(int id){}
~CMyObj(void);
int getTime(){return time;}
int getID(){return ID;}
private:
int ID;
int time;
};
//---------------------------------------------------------------------
class CMyCore
{
public:
CMyCore();
~CMyCore();
bool addObject(CMyObj* obj){ objects.push_back(obj);return 1;}
bool removeObject(int id){};
bool queryObjects();
#ifdef DEBUG
void printState();
#endif
private:
list<CMyObj*> objects;
list<CMyObj*>::iterator objIter;
};
Необходимо отсортировать список объектов objects по времени(time)
Использую следующий код:
bool operator <(CMyObj& a,CMyObj& b)
{
if (a.getTime()>b.getTime()) return true;
return false;
}
//…
objects.sort(operator <);
//…
Получаю ошибку компилятора в <list> d:\Microsoft Visual Studio .NET\Vc7\include\list(735): error C2664: 'bool (CMyObj &,CMyObj &

' : cannot convert parameter 2 from 'CMyObj *' to 'CMyObj &'
d:\Microsoft Visual Studio .NET\Vc7\include\list(735): error C2664: 'bool (CMyObj &,CMyObj &

' : cannot convert parameter 1 from 'CMyObj *' to 'CMyObj &'
Если objects объявить как
list<CMyObj> objects;
list<CMyObj>::iterator objIter;
Все работает и прекрасно сортирует. Но очевидно ,что хранить сами объекты это не дело,
если мне нужно их только опрашивать .
При попытке объявить
bool operator <(CMyObj* a,CMyObj* b)
{
if (a.getTime()>b.getTime()) return true;
return false;
}
e:\MyCore.cpp(8): error C2803: 'operator <' must have at least one formal parameter of class type
Что подскажете?