我知道有很多关于静态函数和变量的问题,但是我找不到一个问题来解释我是如何做到这样的:
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;
}
}
}
我还有一个问题,那就是在很多类中使用数组的正确方法--比如全局数组.比如在棋类游戏中我的棋子位置?对不起我的英语不好。
发布于 2014-09-05 15:34:47
如果您真的希望gamepos数组是静态的,您可以在类板中声明一个静态方法来初始化该数组。
然后从类外部调用此方法。
int main() {
Board * myboard = new Board();
Board::initGamepos();
}
但是,看看您的代码和您想要做的事情(每次创建一个新的Board实例时都会重新初始化gamepos数组,很明显,您不希望游戏是静态的。1板<=> 1游戏数组:这不是静态成员的标记,而是标准成员的标记。
发布于 2014-09-05 15:10:52
静态变量自动初始化为零/false/null,因此不需要初始化数组。
无论如何,您不应该从实例构造函数中重新初始化静态变量,因为这样会产生有趣的结果。
https://stackoverflow.com/questions/25688925
复制相似问题