C:错误“非命名空间范围的显式专业化”
发布时间:2020-12-16 03:20:43 所属栏目:百科 来源:网络整理
导读:templatetypename T1,typename T2class Bimap {public: class Data { private: templatetypename T Data set(T); template Data setT1(typename T1 v) { /*...*/ } };}; 这给我错误: 错误:非命名空间范围中的显式专业化Bimap T1,T2 :: Data’ 我明白错误在
template<typename T1,typename T2> class Bimap { public: class Data { private: template<typename T> Data& set(T); template<> Data& set<T1>(typename T1 v) { /*...*/ } }; }; 这给我错误: 错误:非命名空间范围中的显式专业化Bimap< T1,T2> :: Data’ 我明白错误在说什么但为什么我不能这样做?我该怎么解决? 解决方法
一种方式忘记模板,重载:
Data& set(T1 v) { /*...*/ } 但这里有一些我有时候会使用的技巧 你可以在类中专门设计类模板: class { template<typename T> struct function_ { static void apply(T); }; template<> struct function_<int> { ... }; template<typename T> void function(T t) { return function_<T>::apply(t); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读