错误:没有匹配的函数调用'构造函数'注意:候选函数是:


#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, %dn",cross[i][j].x, cross[i][j].y);
        }
    }
     return cross;
}

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

main.cc:3:

CROSS .h: In function ' CROSS** Generate_Cross_Array(int, int) ':

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

CROSS .h:10:注:候选者为:CROSS::CROSS(int, int)

CROSS .h:5: note: CROSS::CROSS(const CROSS&)

cross.h:26: error:可变大小对象cross不能初始化

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

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

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

相关内容

  • 没有找到相关文章

最新更新