模板类C ++中的重载函数

时间:2016-06-03 07:38:43

标签: c++ templates overloading

我想在模板类中使用default参数重载一个函数,并且我想为参数设置一个默认参数 有可能??

以下示例::

template <typename T> struct endgame {
    void print<T>(T a={default value}); // some thing like this should generate different functions for different typenames

};

template <typename U> endgame<T>::print(U a) {
         cout << "Some unknow type " << a << endl;
}

template <> endgame<T>::print<int>(int a) {
cout << "Integer a " << a << endl;
}

感谢你

1 个答案:

答案 0 :(得分:0)

您可以通过专门化模板类,如下所示:

template <typename T> struct endgame {
  void print(T a ={}) {
    cout << "Some unknow type " << a << endl;
  }
};

template <> struct endgame<int> {
  void print(int a ={}) {
    cout << "Integer a " << a << endl;
  }
};

或者,如果您想专注于print的输入类型,您可以执行以下操作:

template <typename T> struct endgame {
  template<typename U> void print(U a = {}) {
    cout << "Some unknow type " << a << endl;
  }
  void print(int a = {}) {
    cout << "Integer a " << a << endl;
  }
};
相关问题