C/C++变量做结构体数组长度

先看一下C/C++定义可变数组的方法:[C/C++变量做数组长度]

(https://blog..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));
}
经验分享 程序员 微信小程序 职场和发展