【发布时间】:2018-09-03 10:44:30
【问题描述】:
我正在使用原始指针在 C++ 中实现一个动态数组。我是使用模板的新手。为了练习,我决定将课程分成两个 .hpp 和 .cpp 文件。初始化 T 数组时,我在源文件中收到以下编译错误:
“不完整类型'T'的分配”
这是头文件:
template <class T>
class DynArray {
public:
DynArray(); //default constructor
private:
T * array; //internal array
int memsize; //number of allocated memory slots
int t_size; //number of occupied memory slots
};
这里是源文件:
template <>
DynArray<class T>::DynArray() {
memsize = 2;
t_size = 0;
array = new T[memsize];
}
我不喜欢我在源文件中所做的事情。我基本上按照我的 IDE (xcode) 告诉我的去做,但是在这里创建一个专门的模板感觉有些不对劲。这样做的正确方法是什么?
【问题讨论】:
-
将构造函数内容移动到头部。源文件中的模板类型声明并不能真正“正常工作”。
-
一切都是正确的,除了它需要移动到标题。嗯,大部分是正确的。您还需要将
template <> DynArray<class T>::DynArray()更改为template <class T> DynArray<T>::DynArray()。