は現在、私はそれが今、それは私に言っています、私はフィールドのデフォルトコンストラクタを持っている必要があるということです。この
2d配列のクラスメンバーをforループでコンストラクタ内で宣言することは可能ですか?
//gameboard.h
class GameBoard
{
public:
GameBoard(bool showShips);
~GameBoard();
void draw();
void placeShipStart(int x, int y);
void placeShipEnd(int ship, int x, int y);
private:
bool defaultShowShips;
Field playerBoard[10][10];
vector<Ship*> ships[5];
};
//gameboard.cpp
GameBoard::GameBoard(bool showShips)
{
defaultShowShips = showShips;
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
{
xyzCoord ul, lr;
ul.x = j * 5.0f;
ul.y = i * 5.0f;
ul.z = 2.0f;
lr.x = j * 5.0f + 5.0f;
lr.y = i * 5.0f + 5.0f;
lr.z = 0.0f;
playerBoard[i][j] = Field(ul, lr);
}
};
方法を持っています。私は別の位置で各位置の初期化を達成しようとしています。私はこれを完全に間違っているのですか?私はベクトルのベクトルのアプローチを見てきました。可能であれば、それは以前の私のために働いていなかったので、私はそれを避けたいと思います。
私たちはあなたの 'Field'クラスを参照してくださいことはできますか? **デフォルトのコンストラクタ**と書かれているときは、コンストラクタの関数宣言で宣言されたすべての変数に**デフォルトの**値が与えられなければならないことを意味します。あなたの 'Field'コンストラクタには少なくとも2つのパラメータが' xyzCoord'型であることがわかります。したがって、パラメータリストにデフォルト値を指定するか(クラスが表示されたときに表示できます)。または、パラメータを取らない2番目のコンストラクタを追加します。 –
デフォルトのコンストラクタを使用せずにこれらの値を初期化することはできませんか?私は空間を割り当てて、それぞれを個別に構築することができますか? –
私の更新された回答を参照してください。 xyzCoordのコンストラクタを見れば助けになります。 –