Всем привет! Помогите разобраться, пожалуйста!
У меня есть просиенький класс:
class SourceDateType{
private:
char MSource[120];
char MDate[120];
int MNum; // Chislo par Source-Date;
public:
SourceDateType() { MNum = 0; }
void SetSourceDate(char*, char*);
char *GetSource(){ return MSource; }
char *GetDate(){ return MDate; }
void IncNum(){ MNum++; }
int GetNum(){ return MNum; }
};
Я делаю STL список этих объектов:
typedef list<SourceDateType> SourceDateList;
typedef list<SourceDateType>::iterator SourceDateListIter;
И в процедуре мне надо изменять значения узлов этого списка, но VS6 ругается в следующих местах:
void CheckAndPush(SourceDateList &sdlist, SourceDateType &SD){
SourceDateListIter p;
SourceDateType sd;
for(p [b][color=red]= [/color][/b]sdlist.begin(); p[b][color=red]!=[/color][/b]sdlist.end(); ++p){
sd = *p;
if((strcmp(sd.GetDate(), SD.GetDate()) > 0) && (strcmp(sd.GetSource(), SD.GetSource()) > 0))
{
sd.IncNum();
[b][color=red]sdlist.insert(p, *p);[/color][/b]
return;
}
}
sdlist.push_front(SD);
return;
}
Пишет:
Compiling...
IndexTool.cpp
C:\My Projects\IndexTool\IndexTool.cpp(142) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class std::list<class SourceDateType,class std::allocator<class SourceDateType> >::const_iterator' (or there is no
acceptable conversion)
C:\My Projects\IndexTool\IndexTool.cpp(142) : error C2679: binary '!=' : no operator defined which takes a right-hand operand of type 'class std::list<class SourceDateType,class std::allocator<class SourceDateType> >::const_iterator' (or there is no
acceptable conversion)
Error executing cl.exe.
IndexTool.exe - 2 error(s), 0 warning(s)
[/color]
может надо перегружать операторы = и != для своего типа ну и ещё insert надо переопределить?