有类A(头文件A.h) 有另一个类B(头文件B.h)
我能否在A.h中 #include "B.h" 同时又在B.h中 #include "A.h"

解决方案 »

  1.   

    当然可以。问题是 你在A.h中首先写:
    #if !defined(_A_H)
    #define _A_H
    ...
    #endifB中也是一样
    #if !defined(_B_H)
    #define _B_H
    ...
    #endif这样保证只可能include一次。
      

  2.   

    建议写头文件的时候这样写:
    a.h
    #if!defined(_A_H)
    #define _A_H
    //a的头文件内容
    #endifb.h
    #if!defined(_B_H)
    #define _B_H
    //b的头文件内容
    #endif这样怎么套都没事了
      

  3.   

    lord_tyreal(毒药):
    英雄所见啊!几乎雷同!
      

  4.   

    相互包含在许多编译器里面都不允许。
    你尽量让A.cpp include b.h   and b.cpp include a.h
    if this does not satisfy you situation,you may chose pre-declaraion.
    for example: add "class a;" before the defination of class b.
    and include a.h in b.cpp
      

  5.   

    补充一点
    如果是用在VC中用VC的功能来添加的类
    那么就不要写条件编译了VC已经给你做好了
      

  6.   

    同意opentuxedo(开缝的燕尾服)
    至少在VC我试过,报告有一个类没有定义,zhangxhsj(泡泡龙) 和毒药的方法是绝对用了的 
    相互包含是可以避免的,仔细看看C++关于申明和定义的区别就可以了
      

  7.   

    一般的是classA,classB
    不可能同时classA有一个classB的成员变量,classB有一个classA的成员变量,
    那样你想想类的大小...
    一般如此:
    classA有一个classB的成员变量,ClassB有ClassA的指针
    因为在Win32环境里,指针是一个32位的值,编译器知道分配多少内存,
    所以classB.h不必包含classA.h,只要加上一句class classA就可以了
    假如classB.cpp中要用到classA的成员或方法,在classB.cpp中包含 classA.h就可以了