【问题标题】:Error while inserting template values in unordered_map Boost在 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 的参数更好吗?

【问题讨论】:

    标签: c++ templates boost


    【解决方案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));
    //                                 ^^^  ^^^^^
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      • 2013-08-10
      • 2013-02-06
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多