C ++编译器错误C2679:二进制'=':找不到运算符

时间:2012-11-09 00:26:44

标签: c++ class visual-c++ compiler-errors

我在尝试填充已创建的类的对象的2D数组时遇到问题。错误是:

error C2679: binary '=' : no operator found which takes a right-hand operand of type 'Cell *' (or there is no acceptable conversion)

生成错误的代码如下:

摘自main.cpp

Cell cells[80][72];

for(int x = 0; x < 80; x++){
    for(int y = 0; y < 72; y++){
        cells[x][y] = new Cell();
    }
}

摘自cell.hpp

class Cell
{
public:
    Cell();
    int live;
    int neighbours;
};

摘自cell.cpp

Cell::Cell()
{
    srand(time(0));
    this->live = rand() % 2;
    this->neighbours = 0;
}

我怀疑我需要在Cell类的构造函数上进行某种重载,但我不知道如何为这种情况实现一个。

2 个答案:

答案 0 :(得分:0)

你正在创建一个新的Cell你创建一个Cell *。 顺便说一句,当你写单元格[X] [Y]时,没有别的东西可以分配。

如果你有:

,你会做一个新的
cell ** matrix = new cell[X];
for(int i=0;i<X;i++){
    matrix[i]=new cell[Y];
}

但是在这里,在您发送的代码中,执行“填充”没有用,单元格已经存在并已分配

答案 1 :(得分:0)

由于Cell具有无参数构造函数语句

Cell cells[80][72];

定义了一个80x72的Cell个对象数组。已经为您构造了对象,因此嵌套的for循环是不必要的。

另一方面,如果您将Cell声明为指向Cell的80x72指针数组,即

Cell* cells[80][72];

然后你必须像你想要的那样分配每一个。 如果你实际上不需要使用指针,那就不要。