关于如何初始化一个类内的静态二维数组变量问题

来源:互联网 发布:自学java工程师 编辑:程序博客网 时间:2024/06/01 10:30

用面向对象写了一个黑白棋的代码, 发现不知道如何去初始化一个静态的二维数组, 编译器总是报错。先给大家看看类内的一些声明吧

class chess{public:    chess(int a):color(a)    {        num=0;    }    int counter();///计数器,计算棋子个数;    const friend void draw(chess &, chess &);///画出棋盘,每落一子更新一次;    friend int win(chess &, chess &);    void change(int, int, chess &);    static bool judge(int x, int y){};private:    static int chessmen[9][9];    int num;    int color;///黑色为1, 白色为-1, 无子为0;};


在类外,chessmen[9][9]就不知道怎么初始化了。一开始用的memset函数,编译器报错,然后直接给这个二维数组的某个下标所代表的值赋一个初值,编译器也会报错。

然后就想到了一个蠢办法:

int chess::chessmen[9][9]={                            {0, 0, 0, 0, 0, 0, 0, 0, 0},                            {0, 0, 0, 0, 0, 0, 0, 0, 0},                            {0, 0, 0, 0, 0, 0, 0, 0, 0},                            {0, 0, 0, 0, 0, 0, 0, 0, 0},                            {0, 0, 0, 0, 1, -1, 0, 0, 0},                            {0, 0, 0, 0, -1, 1, 0, 0, 0},                            {0, 0, 0, 0, 0, 0, 0, 0, 0},                            {0, 0, 0, 0, 0, 0, 0, 0, 0},                            {0, 0, 0, 0, 0, 0, 0, 0, 0},                        };

也确实没有语法错误了,但总是感觉哪里很不舒服。

上网百度了一下,大致有以下两个办法:

1 构造一个静态成员函数, 用该函数初始化静态二维数组。

2 继承派生, 将该二维数组用一个类封装一下,在新写的类中可以用构造函数解决,思路也很清晰。

下面是我用第一种办法做的一个示例

class chess{public:    chess(int a):color(a)    {        num=0;    }    int counter();///计数器,计算棋子个数;    const friend void draw(chess &, chess &);///画出棋盘,每落一子更新一次;    friend int win(chess &, chess &);    void change(int, int, chess &);    static bool judge(int x, int y)    {        if(chessmen[x][y]==1||chessmen[x][y]==-1)        {            cout<<"此处无法落子,请重新设置棋子坐标"<<endl;            return 1;        }        return 0;    }    static void star_chess()    {        memset(chessmen, false, sizeof(chessmen));        chessmen[4][4]=chessmen[5][5]=1;        chessmen[4][5]=chessmen[5][4]=-1;    }private:    static int chessmen[9][9];    int num;    int color;///黑色为1, 白色为-1, 无子为0;};int chess::chessmen[9][9]={{0}};

直接调用star_chess()静态函数完成初始化即可。


0 0
原创粉丝点击