2012-02-10 3 views
2

В следующем С ++ код:ошибка: несовместимые типы в присвоении `Int 'в` Int [2]'

int iBlocks[9][2]; 
class System{ 
    void setBlocks(){ 
    int iUCtr = 0; 
    int iUYCtr = 105; 
    while(1){ 
     int iUXCtr = 180; 
     while(1){ 
     iBlocks[iUCtr] = 0;   //error happens here. 
     iBlocks[iUCtr][0] = iUXCtr; 
     iBlocks[iUCtr][1] = iUYCtr; 
     iUCtr += 1; 
     iUXCtr += 120; 
     if(iUXCtr>420) break; 
     } 
     iUYCtr += 120; 
     if(iUYCtr>345) break; 
    } 
    } 
    public: 
    System(){ 
     setBlocks(); 
     cout << "Block settings set..." << endl; 
    } 
}; 

MinGW G ++ производит эту ошибку:

incompatible types in assignment of `int' to `int[2]' 

Проблема заключается в iBlocks[iUCtr] = 0; ,

Когда я изменил iBlocks на указатель, он сработал. Может кто-нибудь объяснить мне, что происходит под капотом?

+0

Эта строка неправильная. Что ты пытаешься сделать? Вы можете просто удалить его. –

+0

Ну ... что это ты делал _trying_? Мы не можем сказать из кода, потому что, как вы обнаружили, код не делает этого. 'iBlocks [iUCtr] = 0;' неверно, потому что 'iBlocks [iUCtr]' - это массив 'int' и '0' - это всего лишь один' int', как сказано в ошибке. –

+0

Вы не можете получить доступ к массиву. Что ты пытаешься сделать? –

ответ

1

Строка iBlocks[iUCtr] = 0; не требуется. Удали это.

2

Вы пытаетесь присвоить значение 0 массиву int [2]. Я думаю, вы можете просто удалить полную строку, поскольку элемент уже заполнен в следующих двух строках кода.

3

Вы пытаетесь установить целую «строку» матрицы со значением «0». Компилятор не позволит вам это сделать.

Возможно, вы пропустили второй индекс, так как iBlocks матрица, то, что нужно что-то вроде этого:

iBlocks[iUCtr][SecondIndex] = 0 

Если вместо этого вы пытаетесь инициализировать всю матрицу с Зеро, написать функцию сделай это.

+0

Это было бы бессмысленно. Он уже заполняет оба элемента в суб-массиве сразу после этого. Я подозреваю, что он пытается «установить нулевой указатель», потому что кто-то был против него и сказал: «Массивы - это просто указатели», –

Смежные вопросы