gpt4 book ai didi

c++ - 为什么我们需要为每个类函数定义指定类型模板参数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:48:10 25 4
gpt4 key购买 nike

既然我们在类声明上定义模板类型,为什么我们必须在每个函数定义之后指定它?我很困惑,因为它甚至在同一个文件中,所以似乎几乎没有必要在每个函数上指定它,而且因为我们正在使用 :: 运算符,它不应该回到类声明并查看T 已经被定义了。

我是 c++ 的新手,仍然需要澄清一些误解。

#ifndef __Foo_H__
#define __Foo_H__

template <class T>
class Foobar{

private:
bool foo1(T);
bool foo2(T);

public:
FooBar();

};

template <class T> bool FooBar<T>::foo1(T data){
code..
}

template <class T> bool FooBar<T>::foo2(T data){
code..
}

#endif

最佳答案

首先,您可以像正常函数一样重命名参数:

template <class U> bool FooBar<U>::foo1(U and_here_too){/**/}

它还设法处理(部分)特化:

template <> bool FooBar<int>::foo1(int i){/**/}
template <typename T> bool FooBar<std::vector<T>>::foo1(std::vector<T> v){/**/}

关于c++ - 为什么我们需要为每个类函数定义指定类型模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34256942/

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