Zur Zeit habe ich diesen
Ist es möglich, ein 2d-Array-Klassenmitglied im Konstruktor mit einer for-Schleife zu deklarieren?
//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);
}
};
so, wie es jetzt ist es mir zu sagen, dass ich ein Standard-Konstruktor für das Feld haben muß. Ich versuche, jede Position in einer anderen Position zu initialisieren. Mache ich das völlig falsch? Ich habe den Vektor der Vektoren gesehen. Wenn möglich, möchte ich das vermeiden, weil es früher nicht für mich funktionierte.
Können wir Ihre 'Field' Klasse finden Sie? Wenn ** Standardkonstruktor ** angegeben ist, bedeutet dies, dass alle in der Konstruktorfunktionsdeklaration deklarierten Variablen mit ** Standardwerten ** versehen sein müssen. Ich sehe, dass dein 'Field'-Konstruktor mindestens 2 Parameter vom Typ' xyzCoord' hat. Stellen Sie also entweder Standardwerte in der Parameterliste bereit (ich kann Sie anzeigen, wenn ich Ihre Klasse sehe). Oder fügen Sie einen zweiten Konstruktor hinzu, der keine Parameter akzeptiert. –
Ist es nicht möglich, diese Werte ohne Verwendung eines Standardkonstruktors zu initiieren? Wie kann ich den Raum zuordnen und dann jeden einzeln konstruieren? –
Siehe meine aktualisierte Antwort. Es wäre hilfreich, die Konstruktoren für xyzCoord zu sehen. –