不完整类型的分配'T' C++
allocation of incomplete type 'T' c++
我正在使用原始指针在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(告诉我要做的事情,但是在此处创建专用模板有些问题。什么是正确的方法?
请阅读为起点,为什么仅在标题文件中实现模板?
关于误差分配不完整的类型't'。请仔细查看代码
template <>
DynArray<class T>::DynArray()
template
不引入类型T
。class T
类型是在第二行中引入的,第一次在那里提到。您可能知道,没有template
的class T
是一个正向声明,并且是不完整的类型,其大小是未知的,new
不能分配未知大小的内存。适当的模板类成员应像这样声明
template <class T>
DynArray<T>::DynArray()
这是句法正确的,但不是实际,请阅读上述文章。
相关文章:
- 将数组的地址分配给变量并删除
- vector.resize()中的分配错误
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- Win32编译器选项和内存分配
- 函数中堆分配的效果与缺少堆分配的情况
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 获取字符串的长度并将其分配给数组
- 将地址分配给本地指针后,公共对象的变量将消失
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 我在二维向量中是否正确分配了内存
- 正在尝试重载二进制搜索树分配运算符
- GlobalAlloc而不是其他分配方法
- 自定义先决条件对移动分配运算符有效吗
- 我可以重新分配/覆盖std::字符串吗
- 在c++中使用动态分配的问题
- 当一个新对象被分配到它的地址时,对象是否必须被销毁
- 为什么我可以使用比分配的内存更多的内存
- 使用RAII在给定次数的迭代后重新分配资源