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

Posted

技术标签:

【中文标题】在 unordered_map Boost 中插入模板值时出错【英文标题】:Error while inserting template values in unordered_map Boost 【发布时间】:2016-04-25 12:00:51 【问题描述】:

我正在为 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】:

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

template <class Tkey, class Tvalue>
unordered_map::iterator CHashMap<Tkey, Tvalue>::SetAt(Tkey key, Tvalue value)
//                                                        ^^^^        ^^^^^^

   m_HashMap.insert(std::make_pair(key, value));
//                                 ^^^  ^^^^^

【讨论】:

以上是关于在 unordered_map Boost 中插入模板值时出错的主要内容,如果未能解决你的问题,请参考以下文章

修改 boost unordered_map 中键的值

(转载)STL map与Boost unordered_map的比较

boost::unordered_map 中以结构为键的 boost 变体

map和unordered_map

指定构造 boost::unordered_map 时的最小桶数

Boost::unordered_map 与初始化列表?