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

标签 c++ templates boost

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

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));
//                                 ^^^  ^^^^^
}

关于c++ - 在 unordered_map Boost 中插入模板值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36839974/

相关文章:

c++ - VC++2013 中嵌套可变参数模板结构的别名

C++ Boost 属性树 - 按文件更新树

sockets - Boost Asio tcp::iostream构造每秒钟使用都会引发访问冲突异常

关于类型转换的 C++ 问题

c++ - 延迟的上下文未填充D3D11_MAPPED_SUBRESOURCE大小

c++ - 为什么将 char16_t 定义为具有与 uint_least16_t 相同的大小而不是 uint16_t?

c++ - 当按值发送参数时,为什么不调用默认的复制构造函数?

c++ - 2种模板类型之间的转换

mysql - SubSonic 生成命名空间,但我的网站无法识别它。

c++ - 如何在文件中保存 vector<vector<vector<float>>> 并检索数据?