gpt4 book ai didi

c++ - 为什么我必须在模板中的每个函数上方声明模板?

转载 作者:太空狗 更新时间:2023-10-29 23:49:41 25 4
gpt4 key购买 nike

我正在编写一个模板,但我对此有点陌生。我注意到我遇到的每个教程都在实现的每个函数上方声明了模板。我很好奇这是否是出于某种原因,是否有解决方法,以及它有何用处。

示例:在某个文件中(我们称之为 template.h):

template <class T> class MyClass
{
public:
MyClass(T parameter);
T getParameter() const;
void setParameter();
void doSomethingUseless() const;
private:
T mParameter;
}


template<class T>
MyClass<T>::MyClass(T parameter):mParameter{parameter}
{}

template<class T>
T MyClass<T>::getParameter() const
{
return mParameter;
}

template<class T>
void MyClass<T>::setParameter(T parameter)
{
mParameter = parameter;
}
template<class T>
void MyClass<T>::doSomethingUseless() const
{
for (int i = 0; i < 10000; i++)
}
  • 如果每个函数都与模板类型? (例如,doSomethingUseless 方法)
  • 为什么 template<class T> 都是和 MyClass<T>每个函数上面都需要编译吗?
  • 我是否处理不当/是否有更简单的方法来做到这一点?

总之,感谢您的观看。请注意,我没有编译上面的例子,我概括了我写的一个不同的模板类(里面没有一堆繁忙的函数)如果有错误,我道歉。

最佳答案

模板类的成员函数本身也是模板。因此,需要使用任何必需的模板参数(在您的情况下为 T)定义它们。如果您没有这样做,您可以编写如下函数:

void MyClass::memberFunc(T var) {}

在这种情况下,T 是什么?在此范围内没有定义 T。

那么人们是做什么的呢?许多代码库将简单地定义与类内联的函数。但是其他人坚持将它们分开,就像您所做的那样。不幸的是,这只是语言的要求。

关于c++ - 为什么我必须在模板中的每个函数上方声明模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38000073/

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