2016-04-02 22 views
-4

在头文件:为什么我得到{错误:2061标识符{男星

#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

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

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

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

-1

您没有传递任何线索,你的构造你想要什么牛逼在你使用它们的时候。我建议在构造函数中添加一个参数T,即使您只是将它用作假设初始值,以便编译器可以推导出Arrayc()的类型,例如new Arrayc(10, 0)new Arrayc (10, 0.0f)

+0

构造函数本身不是模板。我建议将它固定到'新Arrayc (10)'和'new Arrayc (5)'可选的模板工厂。 – LogicStuff

相关问题