參數我在C很新++ althought一點在Java中有經驗,我的問題是下一個:陣列,而不在C++
我做的,我要創建一個抽象數據類型的數獨項目的盒子和董事會。在電路板之一中,我創建了一個二元組框,但是當我想將其創建爲公共數據時,我可以在整個班級中使用它,而不僅僅在電路板構造器中使用它。
我在板構造函數中創建它,因爲如果我沒有在那裏創建它,我無法知道每個維的值,並且如果我創建變量Box box[int][int]
,我可以在類中使用它,我無法知道尺寸。有些代碼會更好理解。
此代碼允許我創建具有我想要的尺寸的Box數組,因爲它在板構造函數中,而不是在它創建時具有作爲參數的框數,但它不允許我使用「casilla 「在課堂上,也沒有其他班的另一部分變量:
class tablero{
int filas;
int columnas;
public:
tablero (int filas, int columnas){
this->filas = filas;
this->columnas =columnas;
Casilla casilla[filas][columnas];
}
Casilla getCasilla(int n, int m){
return casilla[n][m]; <- Here shows an error because casilla cannot be resolved.
}
而這個其他代碼讓我用卡西利亞變量,但我必須給它的參數尺寸之前,我知道他們:
class tablero{
int filas;
int columnas;
public:
Casilla casilla[0][0];
tablero (int filas, int columnas){
this->filas = filas;
this->columnas =columnas;
}
Casilla getCasilla(int n, int m){
return casilla[n][m];
}
沒有錯誤,但卡西利亞的尺寸在我認識他們之前必須先給出數組,因此他們可能是錯誤的(因爲董事會可能有不同的維度。
這是我第一次用C++進行編程,而且我對這個問題感到非常沮喪,任何人都可以幫助我找到一種方法來使它成爲雙向的方式嗎? (我已經試圖留下兩個維空,然後在構造函數中放casilla[][] = Casilla cas[filas] [columnas]
,但它給了我一個錯誤..)
感謝您的幫助大家。另外,如果您認爲標題不夠清楚,您可以提出建議,我會改變它。
的卡西利亞代碼是這樣一個:
類卡西利亞{
int fila;
int columna;
int numero;
public:
// constructor
Casilla(int fila, int columna,int numero)
{
this->fila = fila;
this->columna = columna;
this->numero = numero;
}
};
感謝大家的回答,我已經找到了我需要的來自3個不同人的答案。我無法贊成你們所有人,因爲我仍然沒有15的聲望,但是當我擁有它時,我會讓所有人都滿意。謝謝你的答案,真的。我只需要知道我對選中的答案發表了什麼評論,並且這些答案都會得到答覆。
與原始數組相比,使用'std :: vector>'。 –
如果情況未知,動態內存分配是不確定的。作爲一個新手,你最好使用std :: vector,如上所示。 – IrineK