2013-12-19 93 views
0

我的代碼是這樣的:實現一個類對象(C++)的動態創建陣列

class cell{ 
public: 
int v; 
int x[5]; 
} 

cell **block; //initialized the size of the array as [5][5] in main 

現在我真正想要做的是,我想從一個整數數組中的值複製到V成員上面這個類的每個對象。像:

int arr[5][5];

ARR具有整數值。我想像這樣複製。

for(int i=0; i<5;i++) 
    for(int j=0;j<3;j++)*(*(block+i)+j).v=arr[i][j]; 

肯定這是不可能的,因爲我的IDE說。它說:「聲明失蹤。」並朝

*(*(block+i)+j).v=arr[i][j];

表示同樣這是怎麼了,我雖然初始化塊。

int V=5; 
block = new cell*[V+1]; 
for(int x__=0; x__<=V; ++x__) 
{ 
    for(int y__=0; y__<=V; ++y__) 
    { 
     block[x__][y__].v=0 ; 
    } 
} 

任何人都可以幫助我實現這個目標嗎?

+0

'block [i] [j] .v = arr [i] [j];' – godel9

+0

@ godel9那也行不通。 –

+0

我沒有編輯我的帖子現在的初始化語句。 @ godel9基本上,編譯器被我提到的錯誤困住了。 「;聲明缺失」 –

回答

1

你沒有正確初始化block

int V=5; 
block = new cell*[V]; 
for(int x = 0; x < V; ++x) 
{ 
    block[x] = new cell; 
    for(int y = 0; y < V; ++y) 
    { 
     block[x][y].v = 0; 
    } 
} 

可以使用然後複製二維數組:

for(int i = 0; i < V; ++i) 
    for(int j = 0; j < V; ++j) 
     block[i][j].v = arr[i][j]; 

另外,我建議你看看std::vector在C++中數組,並且您應該在構造函數中初始化v成員變量。

+0

我正在使用矢量模板不可用的預標準版本。所以我不能使用它。我確實使用了一個構造函數來初始化它。好,我明白了。讓我試試這個。 –

+0

如果您在構造函數中初始化'v',那麼當您創建'cell **'2D數組時,您不需要將'v'設置爲零。 – godel9

+0

是的,我剛剛用循環刪除了該語句。 –