我知道有很多关于静态函数和变量的问题讨论,但我找不到解释我这样做的事情:
board.h
class board:public QGraphicsPixmapItem
{
public:
board();
static basedice *gamepos[8][8];
};
我希望像这样定义我的数组:
board.cpp
board::board()
{
for (int i=0;i<8;i++)
{
for (int j=0;j<8;j++)
{
gamepos[i][j]=NULL;
}
}
}
我还有一个问题,这是一种在许多类中使用数组的正确方法,例如全局数组...例如在国际象棋游戏中保存我的作品的位置? 抱歉我的英语不好。
答案 0 :(得分:1)
如果你真的希望gamepos数组是静态的,你可以在类Board中声明一个静态方法来初始化数组。
然后从课外调用此方法。
int main() {
Board * myboard = new Board();
Board::initGamepos();
}
然而,查看您的代码以及您想要做什么(每次创建新的Board实例时重新初始化gamepos数组,很明显您不希望gamepos是静态的。 1板&lt; =&gt; 1 gamepos数组:这不是静态成员的标记,即标准成员的标记。
答案 1 :(得分:0)
静态变量自动初始化为零/ false / null,因此您不需要初始化数组。
无论如何,您不应该从实例构造函数重新初始化 static 变量,因为这会产生有趣的结果。