模板格式下的结构常量错误

时间:2012-04-12 13:49:52

标签: c++ templates

以下代码告诉我o.days和days from constructor无法解决,有谁知道为什么?

template <class T> struct Array{
    int days;
    T * M;
};

类的构造函数:

void constr(Array<Expe> &o){
        o=new Array;
        o->days = days;
        o->M = new Array[o->days];
}
编辑(Luchian Grigore):

template <class T> struct Array{
int days;
T * M;
Array( int size ) : days(size), M(new int[size])
{
}
~Array()
{
   delete[] M;
}
};

当我尝试在main中初始化一个数组时:

int main(){
//Main function of the program. no pre/ post condition.
Array <Expe> A;

错误:

enter code here .. \ M.cpp:18:15:错误:没有匹配函数来调用'Array :: Array()'

1 个答案:

答案 0 :(得分:4)

Array<Expe> &o是对Array<Expe>对象的引用,而不是指针。如果您必须重新初始化它,则语法为。

o = Array<Expe>();

您可以通过.

访问这些成员
o.days = days;
o.M = new Array[o.days];

编辑:

我记得昨天的代码。为什么你再次使用适当的构造函数?

template <class T> struct Array{
    int days;
    T * M;
    Array( int size ) : days(size), M(new int[size])
    {
    }
    ~Array()
    {
       delete[] M;
    }
};