#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;
}
,
我想創建一個2維對象數組並初始化它在函數Generate_Cross_Array(int,int),但g ++告訴我如下:錯誤:沒有匹配的函數調用'構造函數'注:候選人是:
In file included from main.cc:3:
cross.h: In function ‘CROSS** Generate_Cross_Array(int, int)’:
cross.h:23: error: no matching function for call to ‘CROSS::CROSS()’
cross.h:10: note: candidates are: CROSS::CROSS(int, int)
cross.h:5: note: CROSS::CROSS(const CROSS&)
cross.h:26: error: variable-sized object ‘cross’ may not be initialized
謝謝任何給我任何解決方案的人。
+1,只是指出問題出在'cross [i] = new CROSS [N];'行,編譯器無法構造沒有默認ctor的對象數組。另一方面,'cross = new CROSS * [M];'行是可以的,因爲你正在爲'CROSS'分配指針而不是調用任何ctor。 – vsoftco
非常感謝你們。我認爲我必須採取其他一些方法來解決問題。 – luo4neck