
template <class T,bool flag>class A{ //... voID f() { std::cout << "false" << std::endl; } //...};template<class T>voID A<T,true>::f<T,true>(){ std::cout << "true" << std::endl;} 上面的代码是错误的,不编译,但你知道我将要做什么.那我该怎么做呢?
解决方法 你不能只专门化一个类的方法.通常你可以在同一个T上使用模板嵌套类来解决这个问题.template <class T,bool flag>class A{ //... template <class Q,bool flag> class F_Helper { voID operator()() { std::cout << "false" << std::endl; } }; template <class Q> class F_Helper<Q,true> { voID operator()() { std::cout << "true" << std::endl; } }; F_Helper<T> f; //...}; 显然,如果您确实需要访问封闭类’this指针,则需要更多的样板.
总结以上是内存溢出为你收集整理的c – 是否可以为模板类的成员函数编写特化?全部内容,希望文章能够帮你解决c – 是否可以为模板类的成员函数编写特化?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)