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的东西不用动即可
class B;
class A{
public:
A();
virtual ~A();
public:
B bb;
};
然后在A的源文件里include B
B的东西不用动即可
#3
同意楼上的观点!
#4
可以提前声明 在A.h中class B; 在A.cpp 中#include"B.h"
#5
right
#6
前置声明可以解决互相包含问题,但是互相定义是不合理的,不应该存在我中有你、你中有我的情况,所以,其中一个类只能定义为指针,这样就可以采用前置声明。
#7
恩 同意 学习中
#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的东西不用动即可
class B;
class A{
public:
A();
virtual ~A();
public:
B bb;
};
然后在A的源文件里include B
B的东西不用动即可
#3
同意楼上的观点!
#4
可以提前声明 在A.h中class B; 在A.cpp 中#include"B.h"
#5
right
#6
前置声明可以解决互相包含问题,但是互相定义是不合理的,不应该存在我中有你、你中有我的情况,所以,其中一个类只能定义为指针,这样就可以采用前置声明。
#7
恩 同意 学习中
#8
呵呵