模板 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()
{
}
我查看了多个示例,但无法弄清楚为什么会出现此问题。
谁能告诉我我做错了什么?
- 按照 Neil 在 link 到 Why can templates only be implemented in the header file? 中的建议,将完整的模板放入头文件中。
operator=
的 return 值应该是 DynamicArray<T>&
我命名为 "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()
{
}
我查看了多个示例,但无法弄清楚为什么会出现此问题。
谁能告诉我我做错了什么?
- 按照 Neil 在 link 到 Why can templates only be implemented in the header file? 中的建议,将完整的模板放入头文件中。
operator=
的 return 值应该是DynamicArray<T>&