模板类功能

时间:2015-11-23 03:12:13

标签: c++ function class templates

Noobie程序员在这里,只是学习c ++的类模板。

我当前的项目要求我创建一个模板类,可以将int,double或string作为参数。

到目前为止,每次创建类函数的实现时,我都必须为每个函数设置3个(每个参数类型一个)。

我的问题是,如果某个特定类函数的实现完全相同而不管参数类型如何,是否有办法为它编写一个实现?

提前感谢所有回复!

1 个答案:

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