a.h需要用到b.h中的类,所以在a.h中#include"b.h",但有时在b中也需要a.h中的类,那么如果只在a.h中#include"b.h",在b中可以直接使用a中的类吗?我觉得不可以,但今天在一个vc程序中发现在b中使用a竟然没有出错。不知道是不是我没找到相关的语句,还有,如果不行,那在a.h中#include"b.h"的同时,也在b.h中#include"a.h",不知道这样相互包含是不是可以??
调试欢乐多
class bclass;
另一个用#include "a.h"
你需要 extern
不可以这样用的。
A.h中
Class B;
Class A
{
B* m_b;
}
A.cpp中
#include "A.h"
#include "B.h"B.h中
#include "A.h"
#define _A_HEAD
#include "b.h"
...
#endif
---------------------
#ifndef _B_HEAD
#define _B_HEAD
#include "a.h"
...
#endif
怎么不可以了?
#define _A_HEAD
#include "b.h"
...
#endif
---------------------
#ifndef _B_HEAD
#define _B_HEAD
#include "a.h"
...
#endif
怎么不可以了?
正确
假如a.h中有A类,b.h中有B类。
///a.h中
#include"b.h"
class A{
B m_b;
...
}
而我在b中什么都不写(不#include关于a.h中的任何信息)
//b.cpp中
void B::MyFun()
{ A *m_a=(A*)AfxGetApp()->GetMainWnd();/这里没有报错,可以运行,没有什么向前引用啊??
}
你甚至不用在a.h中#include"b.h"还有关于向前引用,如果定义的不是CLASS呢,如果是STRUCT呢,还能用吗?所以向前引用只能解决一部分问题。