结构体和类向前声明

在编译程序是出现了如下错误,  类或结构体的前向声明只能用来定义指针对象或引用,因为编译到这里时还没有发现定义,不知道该类或者结构的内部成员,没有办法具体的构造一个对象,所以会报错。 
将类成员改成指针就好了。 程序中使用incomplete type实现前置声明有助与实现数据的隐藏。要求调用对象的程序段只能使用声明对象的引用或者指针

在显式声明异常规范的时候不能使用incomplete type


如果想引用别的头文件中定义的结构体,而且又做到发布时不依赖其头文件,就需要在你的头文件中对这个结构体进行前向申明。而前向申明的方式也有一点考究。
1.如果结构体定义如下:

[cpp]  view plain  copy
 print ?
  1. typedef struct tag_test  
  2. {    
  3.     ULONGLONG utime;    
  4.     ULONGLONG umac;    
  5. }test;    

 

你在申明的时候就必须申明为:

[cpp]  view plain  copy
 print ?
  1. typedef struct tag_test test;  

 

2.如果结构体定义如下:

[cpp]  view plain  copy
 print ?
  1. struct test  
  2. {    
  3.     ULONGLONG utime;    
  4.     ULONGLONG umac;    
  5. };  

这样申明就可以了:

[cpp]  view plain  copy
 print ?
  1. struct test;  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值