C部分方法专业化

前端之家收集整理的这篇文章主要介绍了C部分方法专业化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
模板类方法有部分专业化吗? @H_502_2@template <class A,class B> class C { void foo(); }

它不能像这样专门化:

@H_502_2@template <class A> void C<A,CObject>::foo() {};

任何帮助?

解决方法

如果你已经有了专门的课程,你可以在专业课上给予不同的foo实现: @H_502_2@template<typename A,typename B> class C { public: void foo() { cout << "default" << endl; }; }; template<typename A> class C<A,CObject> { public: void foo() { cout << "CObject" << endl; }; };

要在Visual C 2008专业化成员函数,您可以使其模板:

@H_502_2@template<typename A,typename B> class C { template<typename T> void foo(); template<> void foo<CObject>(); };

上述解决方案似乎仅在将来的C标准(根据草案n2914 14.6.5.3/2)才可用.

猜你在找的C&C++相关文章