[英]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.