【发布时间】:2019-06-30 23:13:32
【问题描述】:
我对名为“DynamicArray”的模板类有疑问。我唯一的问题是当我定义我的赋值运算符时。它给了我两个不同的错误
1) 它给我的第一个错误是
DynamicArray& 说“类模板“DynamicArray”的参数列表丢失”
2) 第二个错误是
DynamicArray::operator= 表示“模板参数列表必须与参数列表匹配”
这是我的程序:
DynamicArray.h
#pragma once
#include <iostream>
using namespace std;
template<typename T>
class DynamicArray
{
public:
DynamicArray();
DynamicArray(const DynamicArray &d);
DynamicArray& operator=(const DynamicArray &d);
~DynamicArray();
};
template<typename T>
DynamicArray<T>::DynamicArray()
{
}
template<typename T>
DynamicArray<T>::DynamicArray(const DynamicArray &d)
{
}
template<typename T>
DynamicArray& DynamicArray<T>::operator=(const DynamicArray &d)
{
}
template<typename T>
DynamicArray<T>::~DynamicArray()
{
}
我查看了多个示例,但无法弄清楚为什么会出现此问题。
谁能告诉我我在这里做错了什么?
【问题讨论】:
-
... 和
operator=应该返回一个DynamicArray<T>&。 -
“类模板“DynamicArray”的参数列表丢失”非常冗长。你想通过引用返回
DynamicArray,但你没有指定它的模板参数,所以编译器不知道你到底想返回什么(如果你想总是返回DynamicArray<int>出于某种原因...... ) -
我尝试将定义放在同一个头文件中,然后再将它们移动到 .cpp 文件中,但遇到了同样的问题。
-
只有其中之一。修复我提到的那个会删除另一个。
标签: c++ class templates assignment-operator