错误:没有匹配函数来调用'constructor'注意:候选者是:

时间:2014-06-21 18:07:33

标签: c++ multidimensional-array

#include<stdio.h>
#include<stdlib.h>

class CROSS
{
    public:
    const int x;
    const int y;

    CROSS(int X, int Y): x(X), y(Y)
    {
    }

    ~CROSS() {}
};

CROSS** Generate_Cross_Array(int M, int N)
{
    CROSS** cross;
    cross = new CROSS*[M];
    for(int i=0; i<M; ++i)
    {
        cross[i] = new CROSS[N];
        for(int j=0; j<N; ++j)
        {
            CROSS cross[i][j](i, j);
            printf("%d, %d\n",cross[i][j].x, cross[i][j].y);
        }
    }
     return cross;
}

我正在尝试创建一个二维对象数组并在函数Generate_Cross_Array(int,int)中初始化它,但g ++告诉我以下内容:

  

main.cc:3中包含的文件:

     

cross.h:在函数'CROSS ** Generate_Cross_Array(int,int)'中:

     

cross.h:23:错误:没有匹配函数来调用'CROSS :: CROSS()'

     

cross.h:10:注意:候选人是:CROSS :: CROSS(int,int)

     

cross.h:5:注意:CROSS :: CROSS(const CROSS&amp;)

     

cross.h:26:错误:可能无法初始化变量大小的对象'cross'

感谢任何给我任何解决方案的人。

1 个答案:

答案 0 :(得分:2)

如果您要使用动态分配的数组,则必须提供默认构造函数。这样的事情是合适的:

CROSS(int X = 0, int Y = 0): x(X), y(Y)

如果这不是一个选项,请考虑使用标准库容器,即std::vector