我有模板类Array,其中模板类型T应该是指针或非指针类型.
template<class T>
class TArray
{
static const int max_len=100;
T* data;
int length;
public:
TArray(){data=new T[max_len]; this->length=0;}
void Add(T value){data[length++]=value;}
~TArray();
};
Run Code Online (Sandbox Code Playgroud)
问题是如何释放空间,因为我们不能调用delete这样的指针类型
template<class T>
TArray<T>::~TArray()
{
//for(int i =0; i < length; i++)
// delete data[i]; // NOT WORKING WITH OBJECTS THAT ARE NOT POINTERS !!!
delete[] data;
}
Run Code Online (Sandbox Code Playgroud)
我们有加班
class A
{
int* a;
public:
A(int n){a = new int[n];}
~A(){delete[] a;}
};
Run Code Online (Sandbox Code Playgroud)
并创建两个模板类实例
// Create array of doubles
TArray<double>* double_array …Run Code Online (Sandbox Code Playgroud)