类中声明对象数组出现有关问题
类中声明对象数组出现问题编译器为vs2012#pragma once#include MyPoint.hclass Step{public:CMyPoint pt
类中声明对象数组出现问题
编译器为vs2012
#pragma once
#include "MyPoint.h"
class Step
{
public:
CMyPoint pt[10];//出错行,显示有2个错误
//(1)error C2146: 语法错误: 缺少“;”(在标识符“pt”的前面)
//(2)error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
int num//表示有多少个走法
void AddStep(int x,int y);//将(x,y)添加进走法中
Step(void);
~Step(void);
};
CMypoint在MyPoint.h中定义过了,
请教高手这是什么情况
[解决办法]
Step.h中#include "MyPoint.h"这个是必须的,因为Step类中有MyPoint数组。
两种解决方式:要么将Computer.h和MyPoint.h合并,要么使用前置声明。
感觉上Computer.h应该可以不用包含MyPoint.h。试试在Computer.h中删除MyPoint.h的包含,然后添加class MyPoint;的前置声明。
当然,我没有看到这些文件的源码,不敢肯定Computer.h中一个前置声明就肯定能解决,不过多少试试呗。实在困难就发代码吧,这个应该比较容易解决。
[解决办法]前置声明能解决的问题有限,只有在后面的代码不依赖对象具体内存布局时前置声明才有效。比如说你的Step类里,有、内面包含一个MyPoint数组。因为数组分配内存时必须知道其元素的内存布局,所以前置声明在这里失去作用,你不得不#include "MyPoint.h"。