结构体和类向前声明
2016-01-31 13:24
225 查看
在编译程序是出现了如下错误, 类或结构体的前向声明只能用来定义指针对象或引用,因为编译到这里时还没有发现定义,不知道该类或者结构的内部成员,没有办法具体的构造一个对象,所以会报错。
将类成员改成指针就好了。 程序中使用incomplete type实现前置声明有助与实现数据的隐藏。要求调用对象的程序段只能使用声明对象的引用或者指针。
在显式声明异常规范的时候不能使用incomplete type。
如果想引用别的头文件中定义的结构体,而且又做到发布时不依赖其头文件,就需要在你的头文件中对这个结构体进行前向申明。而前向申明的方式也有一点考究。
1.如果结构体定义如下:
[cpp] view
plain copy
print?
typedef struct tag_test
{
ULONGLONG utime;
ULONGLONG umac;
}test;
你在申明的时候就必须申明为:
[cpp] view
plain copy
print?
typedef struct tag_test test;
2.如果结构体定义如下:
[cpp] view
plain copy
print?
struct test
{
ULONGLONG utime;
ULONGLONG umac;
};
这样申明就可以了:
[cpp] view
plain copy
print?
struct test;
将类成员改成指针就好了。 程序中使用incomplete type实现前置声明有助与实现数据的隐藏。要求调用对象的程序段只能使用声明对象的引用或者指针。
在显式声明异常规范的时候不能使用incomplete type。
如果想引用别的头文件中定义的结构体,而且又做到发布时不依赖其头文件,就需要在你的头文件中对这个结构体进行前向申明。而前向申明的方式也有一点考究。
1.如果结构体定义如下:
[cpp] view
plain copy
print?
typedef struct tag_test
{
ULONGLONG utime;
ULONGLONG umac;
}test;
你在申明的时候就必须申明为:
[cpp] view
plain copy
print?
typedef struct tag_test test;
2.如果结构体定义如下:
[cpp] view
plain copy
print?
struct test
{
ULONGLONG utime;
ULONGLONG umac;
};
这样申明就可以了:
[cpp] view
plain copy
print?
struct test;
相关文章推荐
- 一点题目(二)
- 网络——获取Web数
- Android 5.0 + IDA 6.8 调试经验分享
- iOS开发-- 极好的链接
- AppCan混合开发开发工具使用(三)------云端打包
- var 的使用
- nyoj973 天下第一 (spfa算法)
- mongodb 之 备份数据库
- java解密手机QQ聊天记录
- Linux下使用VisualVm通过JMX连接远程机器
- SDK Hello world2
- Gradle 1.12 翻译——第十四章. 教程 - 杂七杂八
- HDU 2102 A计划(DFS)
- RubyGems 镜像 - 淘宝网
- Oracle 11g对大表中添加DEFAULT值的NOT NULL字段速度有大幅度的提升
- mysql - tmp_table_size & max_heap_table_size
- 百度地图之定位当前
- Jam's math problem
- 一点题目(一)
- 【机房收费系统】验收