簡體   English   中英

錯誤:沒有用於調用“構造函數”的匹配函數注意:候選對象是:

[英]error: no matching function for call to ‘constructor’ note: candidates are:

#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&)

cross.h:26:錯誤:可變大小的對象“ cross”可能未初始化

謝謝任何給我任何解決方案的人。

如果要使用動態分配的數組,則必須提供默認的構造函數。 像這樣的事情是合適的:

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

如果不是這樣,請考慮使用標准庫容器,即std::vector

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM