重载特定模板特化的成员函数

时间:2015-01-12 10:25:31

标签: c++

我有以下代码草案:

  template <class A, class B = B2>
  class SM
  {
    A a;
    f();
    // .....
  };  
  template <class A, class B>
  SM<A,B>::f()
  {
    cout<< a <<" Using B"<<endl;
  };

如何重载此功能的行为?

我想得到这种行为:

 template <class A>
 SM<A,B2>::f()
 {
    cout<< a <<" Using B2"<<endl;
 };

1 个答案:

答案 0 :(得分:0)

您必须在SM类中使用B类。所以你需要知道&#39; B&#39;在SM对象中。

template <class A, class B = B2>
class SM
  {
    A a;
    B b;//the class B object.
    f();
    // .....
  };  
  template <class A, class B>
  SM<A,B>::f()
  {
    cout<< a <<" Using "<<typeid(b).name()<<endl;//use typeid
  };