C++结构题编译错误:field has incomplete type

sunote 2008-01-03 01:50:39
在_NMEA_DATA.h文件里面定义了一个结构体:

struct _NMEA_DATA {
_NMEA_DATA() :
Latitude(0), Longitude(0), Altitude(0), Speed(0), Azimuth(0), Year(0), Mon(0), Day(0), Hour(0), Min(0), Sec(0),
GPSfix(0), SVnum(0) {
}
SINT32 Latitude; //纬度
SINT32 Longitude; //经度
SINT32 Altitude; //海拔
UINT32 Speed; //速度
SINT32 Azimuth; //方向角
UINT16 Year;
UINT8 Mon;
UINT8 Day;
UINT8 Hour;
UINT8 Min;
UINT8 Sec;
UINT8 GPSfix;//0 不定位 1 定位
UINT8 SVnum; //星数
};


在另外一个文件里面,使用这个结构体:
struct _NMEA_DATA;//声明

定义类:
class Position
{
...
_NMEA_DATA gpsInfo;
...
};

编译的时候,其他都是好好的,但是提示:在这个类里面:field ‘gpsInfo’ has incomplete type
为什么会有这样的错误阿?为什么我在函数的参中传递这个结构不会有问题,而在类里面就会有这个错误,我觉得没有问题的。。
请指教,谢谢!
...全文
15969 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunote 2008-01-03
  • 打赏
  • 举报
回复
我换成指针就可以的。
sunote 2008-01-03
  • 打赏
  • 举报
回复
谢谢大家。尤其是kong_ling。
我想包含头文件的,但是我的文件组织的比较复杂,寻找头文件的路径比较麻烦,并且以后文件的结构还是会变动。这样makefie之类的文件就要重写。
所以我想用声明的方法。现在我明白了。谢谢。结贴,给分了。
西山鸦 2008-01-03
  • 打赏
  • 举报
回复
类或结构体的前向声明只能用来定义指针对象,因为编译到这里时还没有发现定义,不知道该类或者结构的内部成员,没有办法具体的构造一个对象,所以会报错。
将类成员改成指针就好了。
csdn5211 2008-01-03
  • 打赏
  • 举报
回复
正确的方法是#include “_NMEA_DATA.h”
csdn5211 2008-01-03
  • 打赏
  • 举报
回复
为何要“ struct _NMEA_DATA;//声明 ”啊,直接include “_NMEA_DATA.h”头文件就行。

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧