STL: Problem mit find()
-
Hallo, ich habe ein problem mit find(). Und zwar habe ich eine einfache Klasse:
class TKennzTyp { public: string sName; string sKZ; string sFileName; version vVersion; int iImage; int iFileSize; }; bool operator==(TKennzTyp &kt1, TKennzTyp &kt2) {return kt1.sFileName == kt2.sFileName;};
Jetzt möchte ich einen vector mittels find() durchsuchen
vector<TKennzTyp> v1; TKennzTyp kt1, kt2; //...Hier steht Initialisierungskram, den ich nicht poste... vector<TKennzTyp>::iterator it = find(v1.begin(), v1.end(), kt); //Fehler // "==" geht aber if(kt1 == kt2) //das geht allerdings { //... }
Es kommt ein Compiler Fehler "Operator '==' not implemented in type 'TKennzTyp' for arguments of the same type" in _algobase.c, wo find() implememntiert ist.
Also hab ich "==" in der Klasse definiert:class TKennzTyp { public: string sName; string sKZ; string sFileName; version vVersion; int iImage; int iFileSize; bool operator==(TKennzTyp &kt) {return sFileName == kt.sFileName;}; };
Der Effekt bleib allerdings der selbe.
Kann mir da jemand helfen, muß man vielleicht noch was anderes überladen für find() oder was muß man tun ? Bin echt planlos....
-
der op mus const sein.
coperator == (...) const
-
Hallo,
genau so funktioniert es.
Beide Varianten gehen...bool operator==(TKennzTyp const &kt1, TKennzTyp const &kt2) {return kt1.sFileName == kt2.sFileName;}; //außerhalb der Klasse //oder class TKennzTyp { public: string sName; string sKZ; string sFileName; version vVersion; int iImage; int iFileSize; bool operator==(TKennzTyp const &kt) {return sFileName == kt.sFileName;}; };
Danke!!!