1

我在尝试填充一个包含我创建的类的对象的二维数组时遇到问题。错误是:

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 类的构造函数进行某种重载,但我不知道如何为这种情况实现一个。

4

3 回答 3

0

试试这个:

Cell *cells[80][72] = {}

您只能将new用于指针。

于 2012-11-09T00:33:09.127 回答
0

你正在做新的细胞你创建一个细胞*。顺便说一句,当你写 cell[X][Y] 时,没有其他东西可以分配。

如果你有,你会做一个新的:

cell ** matrix = new cell[X];
for(int i=0;i<X;i++){
    matrix[i]=new cell[Y];
}

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

于 2012-11-09T00:36:00.990 回答
0

由于Cell有一个无参数的构造函数

Cell cells[80][72];

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

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

Cell* cells[80][72];

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

于 2012-11-09T00:40:58.247 回答