struct Boy {
map<string,int> girlLookUp;
string Name;
};
struct Girl {
map<string,int> boyLookUp;
string Name;
};
int findSumBoyGirl(Boy a, Girl b)
{
Boy *p = &a;
Girl *s = &b;
int sum = p->girlLookUp(s->Name) + s->boyLookUp(p->Name); "----Error----"
return sum;
}
我试图通过查找每个人的异性名称来检索相关的性别值。当我这样做时,我收到错误“地图不提供呼叫操作员。”我不明白这个警告的背景。是不是可以做我正在尝试的事情?
答案 0 :(得分:10)
您想使用map::operator[]
。这意味着你应该
p->girlLookUp[s->Name] + s->boyLookUp[p->Name];
答案 1 :(得分:2)
它认为您正在尝试使用operator()()
,std::map
没有超载。要么使用operator[]
,要么使用C ++ 11,at
。即,
Girl girl;
girl.boyLookUp["hi"];
girl.boyLookUp.at("hi");