Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在无序映射Boost中插入模板值时出错_C++_Templates_Boost - Fatal编程技术网

C++ 在无序映射Boost中插入模板值时出错

C++ 在无序映射Boost中插入模板值时出错,c++,templates,boost,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

我正在为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");
}
模板
类CHashMap
{ 
无序映射m\u散列映射;
};
模板
无序映射::迭代器CHashMap::SetAt(Tkey,Tvalue)
{
m_HashMap.insert(std::make_pair(Tkey,Tvalue));
}
void main()
{
CHashMap m_mymap;
m_mymap.SetAt(“1”,“某些值”);
}
错误C2275:“Tkey”将此类型非法用作表达式

错误C2275:“TValue”将此类型非法用作表达式

还有一件事我想知道

使用模板作为无序映射或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));
//                                 ^^^  ^^^^^
}
模板
无序映射::迭代器CHashMap::SetAt(Tkey键,Tvalue值)
//                                                        ^^^^        ^^^^^^
{
m_HashMap.insert(std::make_pair(key,value));
//                                 ^^^  ^^^^^
}