模板 class 赋值运算符

Template class assignment operator

我命名为 "DynamicArray" 的模板 class 有问题。我遇到的唯一问题是定义赋值运算符时。它给了我两个不同的错误

1) 它给我的第一个错误是

DynamicArray& 说“class 模板 "DynamicArray" 的参数列表丢失”

2) 第二个错误是

DynamicArray::operator= 表示 "template argument list must match the parameter list"

这是我的程序:

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()
{

}

我查看了多个示例,但无法弄清楚为什么会出现此问题。

谁能告诉我我做错了什么?

  1. 按照 Neil 在 link 到 Why can templates only be implemented in the header file? 中的建议,将完整的模板放入头文件中。
  2. operator= 的 return 值应该是 DynamicArray<T>&