C++ 为什么我得到{error:2061标识符{ctor
在头文件中:C++ 为什么我得到{error:2061标识符{ctor,c++,C++,在头文件中: #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
#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
#ifndef数组
#定义数组
#包括“stdafx.h”
使用名称空间std;
模板
类Arrayc
{
私人:
内部阵列化;
整数长度;
T*阵列;
公众:
Arrayc(int-size);
~Arrayc();
};
模板
Arrayc::Arrayc(整数大小)
{
数组化=大小;
长度=0;
数组=新的T[Arraysize];
}
#恩迪夫
在主源文件中:
Arrayc<int> *Arrayofintegers;
Arrayc<float> *Arrayoffloat;
// These lines have the error
Arrayofintegers = new Arrayc<int>::Arrayc(10);
Arrayoffloat = new Arrayc<float>::Arrayc(5);
Arrayc*Arrayofintegers;
Arrayc*Arrayoffloat;
//这些行有错误
Arrayofintegers=newArrayC::Arrayc(10);
Arrayoffloat=新的Arrayc::Arrayc(5);
在使用构造函数时,您没有向构造函数传递任何关于您希望T是什么的线索。我建议在构造函数中添加一个参数T,即使您仅将其用作虚假的初始值设定项,这样编译器就可以推断Arrayc()将是什么类型,例如,新Arrayc(10,0)
或新Arrayc(10,0.0f)
定义构造函数时,只需指定作用域名称,Arrayc::Arrayc
要调用构造函数,只需使用Arrayc(/*args*/)
当然,您甚至根本不需要
new
,但这与错误无关。构造函数本身不是一个模板。我建议将其修复为new Arrayc(10)
和new Arrayc(5)
模板工厂。