一個std ::哈希我有一個類:編譯錯誤定義模板類嵌套類
namespace App
{
template<typename A, typename B>
class MyClass
{
//...
class NestedClass
{
//...
}
}
} //namespace App
我想定義一個std ::散列NestedClass
//Definition of hash functions
namespace std
{
//Definition of a hash to use generic pairs as key
template<typename A, typename B>
struct hash<App::MyClass<A,B>::NestedClass>
{
public:
size_t operator()(const App::MyClass<A,B>::NestedClass &it) const
{
return std::hash(it.toInt());
}
};
}
我得到錯誤:
source.h:1166: error: type/value mismatch at argument 1 in template parameter list for 'template<class _Tp> struct std::hash'
struct hash<App::MyClass<A,B>::const_NestedClass>
^
任何想法?謝謝!
nestedclass是私有的嗎?還有:http://stackoverflow.com/help/mcve – xaxxon
當命名一個由模板類型定義的類型時,必須指定它是一個帶有'typename'的類型。改爲使用'typename App :: MyClass :: NestedClass'。 –
@xaxxon如果你在方括號中寫入MCVE,你會得到:[MCVE] – Jonas