关于 头文件包含的问题 相互包含vc

时间:2021-12-20 16:46:28
大家好,请教个问题
vc6.0下

关于头文件相互包含的问题.
举个最简单的例子.

首先,利用mfc生成个对话框然后
自己定义两个类,普通类,.不放在一起.
这个是A里面
当然有#pragma once和一堆mfc生成的东西
下面是
#include "B.h"
class A{   
public:
 A();
 virtual ~A();

public:
B bb;

};


下面是B头文件中的.
///..上面一堆是mfc生成信息.
#include"A.h"
class B
{public:
B();
virtual ~B();

public:
A aa;


}




就这样,编译的时候,始终无法通过..始终是,说A或者B没有定义.

任意去掉,A aa或者 B bb;都可以通过.编译,并运行.


这种问题该怎么解决呢?

请各位高手给予指点,弄了一天都没弄明白.
非常感谢.

8 个解决方案

#1


把include 方cpp里,.h里预声明就行了

#2


在A的头文件里写上class B,不用include B
class B;
class A{  
public: 
A(); 
virtual ~A(); 

public: 
B bb; 

}; 
然后在A的源文件里include B
B的东西不用动即可

#3


引用 2 楼 b43ok 的回复:
在A的头文件里写上class B,不用include B 
class B; 
class A{  
public: 
A(); 
virtual ~A(); 

public: 
B bb; 

}; 
然后在A的源文件里include B 
B的东西不用动即可

同意楼上的观点!

#4


可以提前声明  在A.h中class B; 在A.cpp 中#include"B.h"

#5


引用 4 楼 heksn 的回复:
可以提前声明  在A.h中class B; 在A.cpp 中#include"B.h"


right

#6


前置声明可以解决互相包含问题,但是互相定义是不合理的,不应该存在我中有你、你中有我的情况,所以,其中一个类只能定义为指针,这样就可以采用前置声明。

#7


引用 4 楼 heksn 的回复:
可以提前声明  在A.h中class B; 在A.cpp 中#include"B.h"

恩 同意 学习中

#8


呵呵

#1


把include 方cpp里,.h里预声明就行了

#2


在A的头文件里写上class B,不用include B
class B;
class A{  
public: 
A(); 
virtual ~A(); 

public: 
B bb; 

}; 
然后在A的源文件里include B
B的东西不用动即可

#3


引用 2 楼 b43ok 的回复:
在A的头文件里写上class B,不用include B 
class B; 
class A{  
public: 
A(); 
virtual ~A(); 

public: 
B bb; 

}; 
然后在A的源文件里include B 
B的东西不用动即可

同意楼上的观点!

#4


可以提前声明  在A.h中class B; 在A.cpp 中#include"B.h"

#5


引用 4 楼 heksn 的回复:
可以提前声明  在A.h中class B; 在A.cpp 中#include"B.h"


right

#6


前置声明可以解决互相包含问题,但是互相定义是不合理的,不应该存在我中有你、你中有我的情况,所以,其中一个类只能定义为指针,这样就可以采用前置声明。

#7


引用 4 楼 heksn 的回复:
可以提前声明  在A.h中class B; 在A.cpp 中#include"B.h"

恩 同意 学习中

#8


呵呵