您的位置:首页 > 其它

结构体和类向前声明

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: