为什么我得到{error:2061标识符{ctor

why i get {error :2061 identifier {ctor

本文关键字:2061 标识符 ctor error 为什么      更新时间:2023-10-16

在头文件中:

#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);  

定义构造函数时,只需要指定作用域名称Arrayc<T>::Arrayc

要调用构造函数,只需使用Arrayc<T>(/*args*/)

当然,您甚至根本不需要new,但这与错误无关。

在使用构造函数时,您没有向构造函数传递任何关于您希望T是什么的线索。我建议在构造函数中添加一个参数T,即使您只将其用作伪初始值设定项值,这样编译器就可以推断出Arrayc()的类型,例如new Arrayc(10, 0)new Arrayc (10, 0.0f)