前置声明在C++大型项目中非常重要,减少编译时相互连接
typedef的前置声明尤其需要注意。
1.一般的类型
在a.h中定义过一个class或者struct
a.h
class object
{
...
};
struct myStruct
{
...
};
想在b.h中使用,但是不想包含a.h的头文件,要使用前置声明,如下方式
b.h
class object;
struct myStruct;
2.有typedef的情况
a.h
class object
{
...
};
struct myStruct
{
...
};
typedef object defMyObject;
typedef myStruct defMyStruct;
想在b.h中使用defMyObject或defMyStrcut,有两种方式必须如下
b.h
typedef class object defMyObject;
typedef struct myStruct defMyStruct;
或者
b.h
class object;
typedef object defMyObject;
struct myStruct;
typedef myStruct defMyStruct;
3.有namespace的情况,和上面的情况相同,只是要加上namespace