【问题标题】:Overload functions in template classes C++模板类 C++ 中的重载函数
【发布时间】:2016-10-03 04:21:17
【问题描述】:

我想在模板类中重载一个带有默认参数的函数,并且我想为参数设置一个默认参数 可以吗??

下面的例子::

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;
}

谢谢

【问题讨论】:

    标签: c++ templates overloading


    【解决方案1】:

    你可以通过专门的模板类如下:

    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;
      }
    };
    

    【讨论】:

      猜你喜欢
      • 2018-05-25
      • 2013-06-11
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多