Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在类的.cpp文件中定义静态数组_C++_Arrays_Pointers_Static - Fatal编程技术网

C++ 如何在类的.cpp文件中定义静态数组

C++ 如何在类的.cpp文件中定义静态数组,c++,arrays,pointers,static,C++,Arrays,Pointers,Static,我知道有很多关于静态函数和变量的问题,但我找不到一个能解释我是如何做这些事情的: 董事会 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

我知道有很多关于静态函数和变量的问题,但我找不到一个能解释我是如何做这些事情的:

董事会

 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;
        }
    }

}
board::board()
{

对于(int i=0;i静态变量会自动初始化为零/false/null,因此不需要初始化数组


无论如何,您不应该从实例构造函数中重新初始化静态变量,因为这样会产生有趣的结果。

如果您确实希望gamepos数组是静态的,您可以在类板中声明一个静态方法来初始化数组

然后从类外部调用此方法

int main() {

    Board * myboard = new Board();
    Board::initGamepos();

}
然而,看看你的代码和你想做什么(即每次你创建一个新的板实例时重新初始化gamepos阵列),很明显你不希望gamepos是静态的。
单板1 gamepos数组:这不是静态成员的标记,而是标准成员的标记。

我想你应该看看这个:你似乎不太了解类的静态成员是如何工作的,我以前看到过,但我看不出我如何在cpp文件中定义它。如果你想到国际象棋,那么每个板都有自己的位置来容纳Chess pieces->在每个棋盘上下一盘棋,让每个棋盘拥有存储位置的位置可能更有意义(即,没有静态gamepos,而是让它成为类棋盘的一员)为什么我不应该使用static,我认为它更容易使用。使用static有什么问题吗?因为在您的特定情况下,1 board=>1 gamepos数组。如果将gamepos设置为static,那么board类的所有实例都共享同一个gamepos数组。重新初始化不是矛盾修饰法吗?好的,但是我如何初始化它?您不需要初始化它,它可以在您的情况下,默认情况下初始化为NULL。如果您想将静态成员初始化为另一个值,可以使用静态方法来执行此操作。我有一个问题:basedice声明在哪里,在本例中定义在哪里。对我来说,basedice似乎没有定义@user3670482。这是我的一个类,所有片段都继承了from itOh.对不起,我使用了一个错误的示例..我不想每次都初始化它..我不应该把它放在构造函数中,我不知道为什么我以前没有尝试过..研究“c++单体”。也许你想让这个板成为单体。