不完整类型的分配'T' C++

allocation of incomplete type 'T' c++

本文关键字:C++ 分配 类型      更新时间:2023-10-16

我正在使用原始指针在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不引入类型Tclass T类型是在第二行中引入的,第一次在那里提到。您可能知道,没有templateclass T是一个正向声明,并且是不完整的类型,其大小是未知的,new不能分配未知大小的内存。适当的模板类成员应像这样声明

template <class T>
DynArray<T>::DynArray()

这是句法正确的,但不是实际,请阅读上述文章。