私はC++が新しく、ポインタやNULLのようなものについては本当に混乱しています。C++は行列をNULLでリストを初期化します
私が作成したオブジェクトへのポインタリストの2次元配列を設定する必要があります。オブジェクトを作成したときにリストをNULLに設定します。私はそれを実行しようとしたときにエラーが発生しました。私はポインターやNULLを使って何かが間違っていたので、それが正しいかわからない。助けていただければ幸いです。ここ
は私のコードです:
GameFullMatrix.h:
private:
std::list<InGame*>** fullMap;
int rows,cols;
GameFullMatrix.cpp:
GameFullMatrix::GameFullMatrix(int _rows, int _cols)
{
this->fullMap = new std::list<InGame*>*[_rows];
for(int i=0; i<_rows; i++)
{
this->fullMap[i] = new std::list<InGame*>[_cols];
for(int j=0; j<_cols; j++)
{
this->fullMap[i][j] = NULL;
}
}
this->rows = _rows;
this->cols = _cols;
}
私はコードをビルドしようとすると、私が取得エラー:
'operator ='に一致するものはありません(オペランドタイプは ' td :: list 'と ' long int ')|
ありがとう。
なぜあなたは 'std :: list'へのダブルポインタを持っていますか?動的配列が必要な場合は 'std :: vector'を使います。 – NathanOliver
ここではポインタの必要はありません。代わりに 'fullMap'に' std :: vector'を使うべきです。 –
エラーに関しては、割り当ての必要はありません。新しく作成された 'std :: list'オブジェクトは空になります。 *オブジェクト*でありポインタではないので、単にオブジェクトをNULLに設定することはできません。 –