2013-04-03 56 views
3

我定義稱爲數組「matriu」:只是二維數組錯誤-C++

#include "CQix.h" 
#include "Graphics_Console.h" 


class cTauler 
{ 

CQix Qix; 
HANDLE hScreen; 
int iniciX, iniciY, fiX, fiY; 

private: 
bool matriu[38][28]; 

int area_activa; 

}; 

,我想所有的值初始化爲false:

void cTauler::InicialitzarTauler() 
{ 

int i,j; 


for(i=0;i<=fiX+2;i++) 
{ 
    for(j=0;i<=fiY+2;j++) 
    { 
     matriu[i][j]=false; 
    } 
} 

但是當我編譯我得到這個錯誤: 0xC0000005:訪問衝突。

所以我試圖定義數組這樣做:

bool matriu[38][28]= {false}; 

我不能編譯,因爲:「不允許數據成員初始化」

我能做些什麼? 謝謝。

+4

您將「fiX」和「fiY」的值設置爲什麼? – 0x499602D2

+2

你會得到一個訪問衝突,因爲你的循環無疑會遍歷數組索引的末尾。首先進行調試。 –

+0

如果在編譯時指定了'38'和'28',變量'fiX'和'fiY'有什麼意義?我寧願有兩個常量(例如枚舉),一個用於行尺寸,另一個用於列尺寸 – Arun

回答

1

如果matriu[38][28]會的數據總是相同的大小,考慮創建const static classmembers fiXfiY並進行初始化,以值38和28,你可能未正確初始化他們...

+1

找到了該錯誤。對於(i = 0; i <= fiX + 2; i ++) } } 無限bucle..have改變'我'爲'j'。太傷心了......感謝:D – user2238244

1

你內環具有

i<=fiY+2 

「J」有故障的停止條件將通過增加內部for循環,但它不會停止,因爲「i」的內部循環中不遞增。

你的錯誤只是一個錯字的結果。將內部循環更改爲

for(j=0;j<=fiY+2;j++)