我对容器地图有疑问。我需要将我自己的类 Person 存储在 key 中,但出现错误 C2784(即,“编译器无法从提供的函数参数中确定模板参数。”)。这是“Ivor Horton's beginning Visual C++ 2010”一书中的例子
#include<map>
#include<string>
#include <iostream>
using namespace std;
void main()
{
class Person{
public:
string c_name,c_surname;
Person(string name,string surname){
c_name=name;
c_surname=surname;
}
};
map<Person,string> phonebook;
phonebook.insert(make_pair(Person("Mel","GIBSON"),"24 32 23"));
phonebook[Person("Mel2","Gibson2")]="243 32 23";
/* it doesn`t work too
typedef pair<Person,string> Entry;
Entry entry1= Entry(Person("Jack","Jones"),"213 567 1234");
phonebook.insert(entry1);*/
system("Pause");
}
错误 1 错误 C2784: 'bool std::operator <(const std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem *)' : 无法推断出 'const std::basic_string<_Elem,_Traits, _Alloc> &' 来自 'const main::Person' e:\microsoft visual studio 10.0\vc\include\xfunctional 125 1 AllClasses
错误 2 错误 C2784:'bool std::operator <(const _Elem *,const std::basic_string<_Elem,_Traits,_Alloc> &)':无法从 'const main:: 推断出'const _Elem *'的模板参数: Person' e:\microsoft visual studio 10.0\vc\include\xfunctional 125 1 AllClasses
错误 3 错误 C2784: 'bool std::operator <(const std::basic_string<_Elem,_Traits,_Alloc> &,const std::basic_string<_Elem,_Traits,_Alloc> &)' : 无法推导出 ' 的模板参数const std::basic_string<_Elem,_Traits,_Alloc> &' 来自 'const main::Person' e:\microsoft visual studio 10.0\vc\include\xfunctional 125 1 AllClasses
错误 4 错误 C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : 无法推断出 'const std::_Tree<_Traits> 的模板参数&' 来自 'const main::Person' e:\microsoft visual studio 10.0\vc\include\xfunctional 125 1 AllClasses
错误 5 错误 C2784: 'bool std::operator <(const std::unique_ptr<_Ty,_Dx> &,const std::unique_ptr<_Ty2,_Dx2> &)' : 无法推导出 'const std:: 的模板参数unique_ptr<_Ty,_Dx> &' from 'const main::Person' e:\microsoft visual studio 10.0\vc\include\xfunctional 125 1 AllClasses
错误 6 错误 C2784: 'bool std::operator <(const std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &)' : 无法推断出 'const std::reverse_iterator<_RanIt> 的模板参数&' 来自 'const main::Person' e:\microsoft visual studio 10.0\vc\include\xfunctional 125 1 AllClasses
错误 7 错误 C2784: 'bool std::operator <(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &)' : 无法推导出 'const std:: 的模板参数_Revranit<_RanIt,_Base> &' 来自 'const main::Person' e:\microsoft visual studio 10.0\vc\include\xfunctional 125 1 AllClasses
错误 8 错误 C2784: 'bool std::operator <(const std::pair<_Ty1,_Ty2> &,const std::pair<_Ty1,_Ty2> &)' : 无法推断出 'const std:: 的模板参数pair<_Ty1,_Ty2> &' from 'const main::Person' e:\microsoft visual studio 10.0\vc\include\xfunctional 125 1 AllClasses
错误 9 错误 C2676: 二进制 '<' : 'const main::Person' 未定义此运算符或转换为预定义运算符可接受的类型 e:\microsoft visual studio 10.0\vc\include\xfunctional 125 1 AllClasses