C部分方法专业化

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

它不能像这样专门化:

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

任何帮助?

解决方法

如果你已经有了专门的课程,你可以在专业课上给予不同的foo实现:
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专业化成员函数,您可以使其模板:

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

  template<>
  void foo<CObject>();
};

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

原文链接:https://www.f2er.com/c/113331.html

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