以下C ++代码:
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 :(得分:3)
您正在尝试使用“0”值设置矩阵的整个“行”。编译器不允许你这样做。
也许你错过了第二个索引,因为iBlocks是一个矩阵,你需要的是这样的:
iBlocks[iUCtr][SecondIndex] = 0
如果您尝试使用零来初始化整个矩阵,请编写一个函数来执行此操作。
答案 1 :(得分:2)
您尝试将值0分配给int [2]的数组。 我认为您可以删除整行,因为项目已在以下两行代码中填充。
答案 2 :(得分:1)
不需要第iBlocks[iUCtr] = 0;
行。删除它。