先看一下C/C++定义可变数组的方法:[C/C++变量做数组长度]
(https://blog.csdn.net/lyq_12/article/details/81773601)
用MFC做抓猴子的小游戏,用同样的方法在头文件中定义结构体数组报错。
protected: // create from serialization only
CCatchMonkeyView();
DECLARE_DYNCREATE(CCatchMonkeyView)
// Attributes
public:
CCatchMonkeyDoc* GetDocument();
int sum; //猴子总数
int remain; //剩余猴子数
int height;
int width;
struct MONKEY{
float x;
float y;
bool isCatched;
};
MONKEY* monkey;
monkey = new MONKEY[sum]; //通过指针动态申请空间
报错信息
error C2327: 'CCatchMonkeyView::sum' : member from enclosing class is not a type name, static, or enumerator
error C2258: illegal pure syntax, must be '= 0'
问题出在不能在头文件中给数组分配空间,申请空间的操作应该在构造函数初始化时候完成。
正确姿势
在头文件中声明,构造函数中分配空间。
public:
CCatchMonkeyDoc* GetDocument();
int sum; //猴子总数
int remain; //剩余猴子数
int height;
int width;
struct MONKEY{
float x;
float y;
bool isCatched;
};
MONKEY* monkey;
CCatchMonkeyView::CCatchMonkeyView()
{
// TODO: add construction code here
width=height=0;
sum=10;
monkey = new MONKEY[sum]; //通过指针动态申请空间
remain=0;
for(int i=0;i<sum;i++){
monkey[i].x=rand()%800+1;
monkey[i].y=rand()%450+1;
monkey[i].isCatched=false;
}
srand((unsigned)time(NULL));
}
本文介绍如何在MFC框架下为游戏正确地定义和使用动态数组。针对创建动态猴子数组时出现的编译错误,文章详细解释了错误原因,并提供了正确的实现方式。

6462

被折叠的 条评论
为什么被折叠?



