模板类赋值运算符

Template class assignment operator

提问人:Luis Torre 提问时间:2/7/2019 最后编辑:Luis Torre 更新时间:2/7/2019 访问量:123

问:

我有一个名为“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()
{

}

我看了多个例子,但无法弄清楚为什么我有这个问题。

谁能告诉我我在这里做错了什么?

C++ 模板 赋值运算符

评论

1赞 2/7/2019
除此之外:stackoverflow.com/questions/495021/......
0赞 Ted Lyngmo 2/7/2019
...并应返回 .operator=DynamicArray<T>&
0赞 Yksisarvinen 2/7/2019
“缺少类模板”DynamicArray“的参数列表”非常冗长。你想通过引用返回,但你没有指定它的模板参数,所以编译器不知道你到底要返回什么(以防你出于某种原因想总是返回......DynamicArrayDynamicArray<int>
0赞 Luis Torre 2/7/2019
在将定义移动到.cpp文件之前,我尝试将定义放在同一个头文件中,并遇到了同样的问题。
0赞 Ted Lyngmo 2/7/2019
只有其中之一。修复我提到的一个会删除另一个。

答:

0赞 Ted Lyngmo 2/7/2019 #1
  1. 按照 Neil 的建议,将完整的模板放在头文件中,通过链接 为什么只能在头文件中实现模板?.
  2. 返回值应为operator=DynamicArray<T>&