关于如何初始化一个类内的静态二维数组变量问题
来源:互联网 发布:自学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
- 关于如何初始化一个类内的静态二维数组变量问题
- c++类内静态变量的初始化
- 关于静态变量初始化问题
- 转 关于二维数组初始化的一个小细节
- 关于静态变量和变量初始化问题
- java如何创建并初始化一个动态的二维数组
- 静态变量的初始化,静态变量在类内定义,在类外进行初始化。
- Ruby中的二维数组初始化的一个小问题
- Ruby中的二维数组初始化的一个小问题
- 类的静态变量初始化问题
- 如何初始化一个类中的静态成员变量
- 如何初始化二维数组
- 二维数组的静态初始化和动态初始化(重点)
- 一个关于类的数组成员变量问题
- 二维数组初始化问题
- 关于二维数组地址问题的一个答复
- python初始化二维数组的小问题
- 关于为什么类的静态成员变量不能立即初始化
- Jquery 选择器
- android图片请求框架Fresco的使用
- php函数注释
- 仿淘宝上拉进入详情页交互的实现
- 安卓中定义滚动的TextView
- 关于如何初始化一个类内的静态二维数组变量问题
- 分布式存储ScaleIo和XIV的一些想法
- appium执行脚本时报Could not start a new session
- 如何使用Xcode Server进行持续集成并自动部署到iTunes Connect
- C#委托使用详解(Delegates)
- FSRCNN网络资源学习(Fast Region-based Convolutional Network)
- 优酷开放SDK之setOnTimeOutListener
- adb push 和 adb pull命令使用教程
- 类似点赞、评论