Главная страница | назад





Article #10434: "Operator 'operator' not implemented in type 'type' for arguments of the same type" error and STL maps.

Question: I'm using STL maps and a class in which I've overloaded the < or> operator and I keep getting errors. ("E2093 Operator 'operator' not implemented in type 'type' for arguments of the same type"). How do I get rid of this?
Answer: Make sure your operator overload is declared as a friend, rather than a class member. The STL object cannot deal with the class-member operator.
Code: Example code showing the way to do it right.
#include <condefs.h>
#include <map>
using namespace std;
class fred
{
public:
fred(int a) : i(a) {}
bool operator<(const fred &f) { return i < f.i; } // this will not work — error E2093
//friend bool operator<(const fred &f1, const fred &f2); // this will work
private:
int i;
};
/*
bool operator<(const fred &f1, const fred &f2)
{
return f1.i < f2.i;
}
*/
#pragma argsused
int main(int argc, char* argv[])
{
map mymap;
mymap[fred(0)] = 0;
return 0;
}

Last Modified: 05-NOV-99