C++可以使用前向声明来减少多种问题,如下面这个例子。
class A{};
前向声明可以在以下几种情况下使用1)定义指向该类型的指向或者引用如
class A;
class B{
A& a;// or A* pa;};
2) 用于声明使用该类型作为形参类型或者返回类型的函数如
class A:
A& func(A& a);}
3) 从基类派生时如
classs A;
class B : public A{
};
在B.h里include一下,就不用前向声明了。
A.h:
#pragma once
class A{public:typedef int AType;};
B.h:
#include "A.h"#pragma once
class B{public:int Test(A::AType *p);};
如果用前向声明,又没include,在使用时必须先include A.h,再include B.h:
#include "A.h"#include "B.h"// 必须先A后B
int main(int argc, char *argv[]){return 0;}
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(2)
前向声明可以在以下几种情况下使用
1)定义指向该类型的指向或者引用
如
class A;
class B
{
A& a;// or A* pa;
};
2) 用于声明使用该类型作为形参类型或者返回类型的函数
如
class A:
class B
{
A& func(A& a);
}
3) 从基类派生时
如
classs A;
class B : public A
{
};
在B.h里include一下,就不用前向声明了。
A.h:
#pragma once
class A
{
public:
typedef int AType;
};
B.h:
#include "A.h"
#pragma once
class B
{
public:
int Test(A::AType *p);
};
如果用前向声明,又没include,在使用时必须先include A.h,再include B.h:
class A
{
public:
typedef int AType;
};
class A;
class B
{
public:
int Test(A::AType *p);
};
#include "A.h"
#include "B.h"
// 必须先A后B
int main(int argc, char *argv[]){return 0;}