[英]Is it possible to declare a 2d array class member inside the constructor with a for loop?
目前我有这个
//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()
{
// Provided default values to your two member variables
}
Field::Field(xyzCoord ul, xyzCoord lr)
{
// Populate your two member variables with the passed in values
}
第一个构造函数将是您的默认设置,因为它没有参数。
我希望这有帮助。 抱歉,我想念您的问题。
更新资料
替代方法是:
在标题中:
Field::Field(xyzCoord ul = xyzCoord(), xyzCoord lr = xyzCoord())
来源:
Field::Field(xyzCoord ul /*xyzCoord()*/, xyzCoord lr /*xyzCoord()*/)
{
// Populate your two member variables with the passed in values
}
我在传达原则。 没有看到Field和xyzCoord类,我看不到合适的声明是什么。 使用最后一种方法,构造函数将为每个参数提供默认值。
有关更多信息,请参见此默认构造函数主题。 它部分提到:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.