繁体   English   中英

在 unordered_map Boost 中插入模板值时出错

[英]Error while inserting template values in unordered_map Boost

我正在为 Boost 无序映射容器编写包装器方法。在我的包装器中,我试图编写一个模板化的包装器。对于下面提到的代码,我在 VS 2010 中遇到编译错误,如下所示。 蚂蚁一帮助请。

template< class Tkey, class Tvalue>
class CHashMap
{ 
  unordered_map<Tkey, Tvalue> m_HashMap;
};

template< class Tkey, class Tvalue>
unordered_map::iterator CHashMap<Tkey, Tvalue>::SetAt(Tkey, Tvalue)
{
   m_HashMap.insert(std::make_pair(Tkey, Tvalue));
}

void main()
{
  CHashMap<std::string, std::string> m_mymap;
  m_mymap.SetAt("1","Some value");
}

错误 C2275:'Tkey' 非法使用此类型作为表达式。

错误 C2275:'TValue' 非法使用此类型作为表达式。

我还想知道一件事,

将模板用作 unordered_map 或 boost::any 的参数是否更好。

您缺少参数的名称-您目前仅使用以下类型:

template <class Tkey, class Tvalue>
unordered_map::iterator CHashMap<Tkey, Tvalue>::SetAt(Tkey key, Tvalue value)
//                                                        ^^^^        ^^^^^^
{
   m_HashMap.insert(std::make_pair(key, value));
//                                 ^^^  ^^^^^
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM