gpt4 book ai didi

c++ - 泛型函数每次都必须输入模板吗?

转载 作者:太空狗 更新时间:2023-10-29 21:45:53 24 4
gpt4 key购买 nike

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

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

例如……

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

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

最佳答案

//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');
}

关于c++ - 泛型函数每次都必须输入模板吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16600604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com