繁体   English   中英

使用类模板需要参数列表

[英]use of class template requires argument list

首先,这是我正在创建的向量类,其基本功能类似于标准库向量。 我们现在正在尝试使其成为类模板。

我看过一些人在为这个错误而苦苦挣扎的例子,但是我觉得我声明自己的函数很好,这样我就看不到问题了。 这是我的声明,

template <typename T>
class MyVector
{
public:
const MyVector& operator=(const MyVector&);
...
}

实现代码。

template <typename T>
MyVector<T>::MyVector(const MyVector& b)
{
//set the vcapacity/vsize equal to the object passed to setup for a new deep copy
vcapacity = b.vcapacity;
vsize = b.vsize;

//allocate space for a new varray that is the copy
varray = new T[vcapacity];

//copy the data into the new array
for (int i = 0; i < vsize; i++)
{
    this->varray[i] = b.varray[i];
}
}

因此,我基本上得到了我认为是指同一件事的两个错误。 第一个指向模板行说“使用类模板需要参数列表”之后的第一行实现,第二个指向实现代码末尾指出的“无法将函数定义与现有声明匹配”。

有任何想法吗?

您的构造函数参数在实现中缺少模板参数:

template <typename T>
MyVector<T>::MyVector(const MyVector<T>& b)
//                                  ^^^
const MyVector& operator=(const MyVector&);

应该

MyVector& operator=(const MyVector&);

为什么在这里看到

对于错误,在实现中使用template参数:

const MyVector<T>&

(顺便说一句,您是否知道向我们提供了operator=的声明和副本构造函数的实现?:-))

无论如何,应该这样想-在实现中实际上没有 MyVector 这样的类 ,添加模板参数后只有一个类。

是实现的第一行,紧接在模板类定义的最后一行之后,您是否省略了; 在您发布的代码中,在该定义的}结束之后? (我本人)通常犯的一个错误,当头文件以类定义结尾而不结束时,它可能在下一个包含的文件中引起错误消息;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM