目前我有这个
//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);
}
};
它现在的方式告诉我,我需要一个字段的默认构造函数。我试图在不同的位置初始化每个位置。我这样做完全错了吗?我已经看到了矢量矢量的方法。如果可能的话,我想避免这种情况,因为它之前并没有为我工作。
答案 0 :(得分:0)
我在某种程度上猜测,但试试这个:
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类,我看不出合适的声明是什么。使用最后一种方法,构造函数如何为每个参数提供默认值。
有关详细信息,请参阅此default constructor主题。在某种程度上,它提到: