C++ 错误:对';的调用不匹配;(const std::basic_string<;char>;)()';

C++ 错误:对';的调用不匹配;(const std::basic_string<;char>;)()';,c++,c++11,map,stdstring,C++,C++11,Map,Stdstring,我有一个映射,它将一对两个类映射为一个简单的字符串。“FirstCollection”和“SecondCollection”是类,“MyCollection”是其中一个类的对象。 但是当在地图上迭代时,我得到一个编译错误: 错误:对“(const std::basic_string)()的调用不匹配” typedef std::map< std::pair ,std::string>NameMap; NameMap globalNameMap=映射列表 (std::make_pair(首次收集,

我有一个映射,它将一对两个类映射为一个简单的字符串。“FirstCollection”和“SecondCollection”是类,“MyCollection”是其中一个类的对象。 但是当在地图上迭代时,我得到一个编译错误:

错误:对“(const std::basic_string)()的调用不匹配”

typedef std::map<
std::pair<集合,信封::信封>
,std::string>NameMap;
NameMap globalNameMap=映射列表
(std::make_pair(首次收集,信封::A),“某物”)
(std::make_pair(第二次收集,信封::B),“另一件事”)
名称映射::常量迭代器iter
=globalNameMap.find(std::make_pair(myCollection,myEnvLope));
if(iter==globalNameMap.end())
{
父->设置名称(“任何内容”);
}否则{
父->集合名(iter->second());
}
此行出错:
parent->setName(iter->second())


有什么建议吗?

iter->second
是成员变量而不是函数。删除括号:
parent->setName(iter->second)

typedef std::map <
    std::pair < Collection, Envelope::Envelope >
  , std::string > NameMap;

NameMap globalNameMap = map_list_of
        ( std::make_pair ( FirstCollection, Envelope::A ), "Something")
        ( std::make_pair ( SecondCollection, Envelope::B ), "Another thing")


    NameMap::const_iterator iter
            = globalNameMap.find( std::make_pair ( myCollection, myEnvelope ));

    if ( iter == globalNameMap.end() )
    {
          parent->setName("anything");
    } else {
          parent->setName(iter->second());
    }