在头文件中:
#ifndef Array_h
#define Array_h
#include "stdafx.h"
using namespace std;
template<class T>
class Arrayc
{
private:
int Arraysize;
int length;
T *array;
public:
Arrayc(int size);
~Arrayc();
};
template<class T>
Arrayc<T>::Arrayc(int size)
{
Arraysize = size;
length = 0;
array = new T[Arraysize];
}
#endif
在主要源文件中:
Arrayc<int> *Arrayofintegers;
Arrayc<float> *Arrayoffloat;
// These lines have the error
Arrayofintegers = new Arrayc<int>::Arrayc(10);
Arrayoffloat = new Arrayc<float>::Arrayc(5);
答案 0 :(得分:0)
当定义构造函数时,您只需指定范围名称Arrayc<T>::Arrayc
。
要调用构造函数,只需使用Arrayc<T>(/*args*/)
。
当然,你根本不需要new
,但这与错误无关。
答案 1 :(得分:-1)
你没有向你的构造函数传递任何线索,告诉你在使用它们时你想要的东西。我建议在构造函数中添加一个参数T,即使你只将它用作伪初始化值,这样编译器也可以推断出Arrayc()的类型,例如new Arrayc(10, 0)
或{{ 1}}