1

作成したクラスのオブジェクトでいっぱいの 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 クラスのコンストラクターに何らかのオーバーロードが必要だと思われますが、この場合に実装する方法がわかりません。

4

3 に答える 3

0

Cellパラメーターなしのコンストラクターがあるため、ステートメント

Cell cells[80][72];

オブジェクトの 80x72 配列を定義しCellます。オブジェクトはすでに構築されているため、ネストされたforループは不要です。

一方、Cellへのポインターの 80x72 配列として宣言する場合Cell、つまり

Cell* cells[80][72];

次に、あなたがやろうとしているように、それぞれを割り当てに行かなければなりません。実際にポインターを使用する必要がない場合は、使用しないでください。

于 2012-11-09T00:40:58.247 に答える
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 *cells[80][72] = {}

newはポインターにのみ使用できます。

于 2012-11-09T00:33:09.127 に答える