2016-06-03 7 views
0

Я хочу перегрузить функцию с параметром по умолчанию в классе шаблона, а также я хочу иметь параметр по умолчанию для аргумента Возможно ли это?Функции перегрузки в классах шаблонов C++

Пример ниже ::

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

Спасибо вам

ответ

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; 
    } 
}; 
Смежные вопросы