我收到这个奇怪的错误,我以前从未见过它,甚至不知道它意味着什么,请帮我一把......
#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
class Person
{
private:
int code;
string name;
public:
Person(int cod,string nom);
void setcode(int cod);
void setname(string nom);
int getcode();
string getname();
};
Person::Person(int cod,string nom){code=cod;name=nom;}
void Person::setcode(int cod){code=cod;}
void Person::setname(string nom){name=nom;}
int Person::getcode(){return code;}
string Person::getname(){return name;}
int main ()
{
map<Person,string>human;
human.insert(make_pair(Person(15,"LewinVillar"),"primero"));
human.insert(make_pair(Person(17,"GeanSosa"),"segundo"));
human.insert(make_pair(Person(20,"WillyRamos"),"tercero"));
human.insert(make_pair(Person(35,"WillyRojas"),"cuarto"));
human.insert(make_pair(Person(40,"CuchoSalas"),"quinto"));
}
这是我得到的错误
Error E2093 C:\Program Files (x86)\Borland\CBuilder6\Include\stl/_function_base.h 73: 'operator<' not implemented in type 'Person' for arguments of the same typ
const Person &,const Person &) const
答案 0 :(得分:2)
在std::map
中使用类型作为键时,地图需要operator<
对其包含的元素进行排序。你需要添加:
friend inline bool operator<( const Person& lhs, const Person& rhs )
{
return lhs.code < rhs.code;
}
(或其他适当的东西)到你的班级。如果你使用code
的getter,它也可以是课后的自由函数,有几个选项。