Сортировка спика объектов (list STL VC++ 6)
От: vovaiv12  
Дата: 14.11.04 22:47
Оценка:
Есть следующие классы:

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


Что подскажете?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.