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

时间:2016-04-02 12:16:50

标签: 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>
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);  

2 个答案:

答案 0 :(得分:0)

定义构造函数时,您只需指定范围名称Arrayc<T>::Arrayc

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

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

答案 1 :(得分:-1)

你没有向你的构造函数传递任何线索,告诉你在使用它们时你想要的东西。我建议在构造函数中添加一个参数T,即使你只将它用作伪初始化值,这样编译器也可以推断出Arrayc()的类型,例如new Arrayc(10, 0)或{{ 1}}