模板类函数

Template Class functions

本文关键字:类函数      更新时间:2023-10-16

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

我当前的项目要求我创建一个可以使用int、doubles或字符串作为参数的模板类。

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

我的问题是,如果一个特定类函数的实现无论参数类型如何都完全相同,那么有没有办法只为它编写一个实现?

提前感谢所有回复!

这个问题有点不清楚——首先你说类模板采用不同的参数,但后来听起来你的成员函数采用了这些不同的参数。

如果你的模板类看起来像

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