我在尝试填充已创建的类的对象的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类的构造函数上进行某种重载,但我不知道如何为这种情况实现一个。
答案 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];
然后你必须像你想要的那样分配每一个。 如果你实际上不需要使用指针,那就不要。