template <class A,class B> class C { voID foo(); }
它不能像这样专门化:
template <class A> voID C<A,CObject>::foo() {};
任何帮助?
解决方法 如果你已经有了专门的课程,你可以在专业课上给予不同的foo实现:template<type@R_502_6889@ A,type@R_502_6889@ B>class C{public: voID foo() { cout << "default" << endl; };};template<type@R_502_6889@ A>class C<A,CObject>{public: voID foo() { cout << "CObject" << endl; };};
要在Visual C 2008专业化成员函数,您可以使其模板:
template<type@R_502_6889@ A,type@R_502_6889@ B>class C{ template<type@R_502_6889@ T> voID foo(); template<> voID foo<CObject>();};
上述解决方案似乎仅在将来的C标准(根据草案n2914 14.6.5.3/2)才可用.
总结以上是内存溢出为你收集整理的C部分方法专业化全部内容,希望文章能够帮你解决C部分方法专业化所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)