3

在 C++ 中,有什么方法可以避免每次在其类定义之外编写类函数时都必须键入模板名称?

例如,如果我想定义一个类函数,我必须template <class T>在每个函数之前键入 type 吗?如果我已经指定该类使用模板,这似乎是很多不必要的工作。

例如...

template <class T>
void LinkedList<T>::addFirst(T data) {
//my code...
}

template <class T>当我已经指定 LinkedList 使用泛型时,为什么还要输入?我已经习惯了泛型在 Java 中的工作方式,所以这对我来说是新的。

4

1 回答 1

2
//release 1:
template <class T>
struct LinkedList
{
    void addFirst(T data);
};

//release 2: partial specialization 
template <class T>
struct LinkedList<T*>
{
    void addFirst(T data);
};

//release 1: 
template <class T>
void LinkedList<T>::addFirst(T data) {}

//release 2
template <class T>
void LinkedList<T*>::addFirst(T data) {}

//complier could not tell which release
//void LinkedList::addFirst(T data){}

void main(){

    LinkedList<char> lc;
    lc.addFirst('c');

    LinkedList<char*> li;
    li.addFirst('c');
}
于 2013-07-20T13:32:01.497 回答