错误:将`int'赋值给`int [2]'的类型不兼容

时间:2012-02-10 13:29:04

标签: c++

以下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更改为指针时,它有效。有人可以向我解释一下发生了什么事吗?

3 个答案:

答案 0 :(得分:3)

您正在尝试使用“0”值设置矩阵的整个“行”。编译器不允许你这样做。

也许你错过了第二个索引,因为iBlocks是一个矩阵,你需要的是这样的:

iBlocks[iUCtr][SecondIndex] = 0 

如果您尝试使用零来初始化整个矩阵,请编写一个函数来执行此操作。

答案 1 :(得分:2)

您尝试将值0分配给int [2]的数组。 我认为您可以删除整行,因为项目已在以下两行代码中填充。

答案 2 :(得分:1)

不需要第iBlocks[iUCtr] = 0;行。删除它。