0

闲置的代码告诉我构造函数的 o.days 和 days 无法解决,有人知道为什么吗?

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];
}

编辑(卢奇安·格里高尔):

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()'

4

1 回答 1

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;
    }
};
于 2012-04-12T13:51:51.497 回答