C++ 在无序映射Boost中插入模板值时出错
我正在为Boost无序映射容器编写包装器方法。在我的包装器中,我试图编写一个模板化包装器。对于下面提到的代码,我在VS 2010中得到编译错误,如下所示。请帮我一个忙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
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));
// ^^^ ^^^^^
}