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