繁体   English   中英

是否可以使用for循环在构造函数中声明2d数组类成员?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM