【问题标题】: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;
}
};