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",不知道这样相互包含是不是可以??

解决方案 »

  1.   

    一个用
    class bclass;
    另一个用#include "a.h"
      

  2.   

    因该不可以了!
    你需要 extern
      

  3.   

    在a.h中#include"b.h"的同时,也在b.h中#include"a.h",
    不可以这样用的。
      

  4.   

    不可以,会有错误的
    A.h中
    Class B;
    Class A
    {
       B* m_b;
    }
    A.cpp中
    #include "A.h"
    #include "B.h"B.h中
    #include "A.h"
      

  5.   

    #ifndef _A_HEAD
    #define _A_HEAD
    #include "b.h"
    ...
    #endif
    ---------------------
    #ifndef _B_HEAD
    #define _B_HEAD
    #include "a.h"
    ...
    #endif
    怎么不可以了?
      

  6.   

    通常这样的情况,我会在.cpp中加入.h文件,而不是直接在.h中包含^_^
      

  7.   

    需要前向引用 象spwnihao(面鱼) 说的那样
      

  8.   

    #ifndef _A_HEAD
    #define _A_HEAD
    #include "b.h"
    ...
    #endif
    ---------------------
    #ifndef _B_HEAD
    #define _B_HEAD
    #include "a.h"
    ...
    #endif
    怎么不可以了?
    正确
      

  9.   

    不对吧!!!!!!!!!!!!!
    假如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();/这里没有报错,可以运行,没有什么向前引用啊??
    }
      

  10.   

    如果你在stdafx.h里#include "a.h" #include "b.h"
    你甚至不用在a.h中#include"b.h"还有关于向前引用,如果定义的不是CLASS呢,如果是STRUCT呢,还能用吗?所以向前引用只能解决一部分问题。