Noobie程序员在这里,只是学习c ++的类模板。
我当前的项目要求我创建一个模板类,可以将int,double或string作为参数。
到目前为止,每次创建类函数的实现时,我都必须为每个函数设置3个(每个参数类型一个)。
我的问题是,如果某个特定类函数的实现完全相同而不管参数类型如何,是否有办法为它编写一个实现?
提前感谢所有回复!
答案 0 :(得分:0)
这个问题有点不清楚 - 首先你说类模板采用不同的参数,但听起来你的成员函数正在采用这些不同的参数。
如果您的模板类看起来像
template<typename T>
class X
{
public:
X(const T& t) : m_t(t) {}
void print();
private:
T m_t;
};
print
的实施可能如下所示:
template<typename T>
void X<T>::print()
{
std::cout << m_t;
}
成员函数也可以是模板:
template<typename T>
class X
{
public:
X(const T& t) : m_t(t) {}
template<typename U>
void printBefore(const U& u);
private:
T m_t;
};
类模板中函数模板的定义如下所示:
template<typename T>
template<typename U>
void X<T>::printBefore(const U& u)
{
std::cout << m_t << u;
}