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

时间:2016-04-25 12:00:51

标签: c++ templates 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的参数是否更好?

1 个答案:

答案 0 :(得分:1)

您错过了参数的名称 - 您目前只使用这些类型:

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