zoukankan      html  css  js  c++  java
  • 两个类头文件互相包含

    此文转载自:

    C++中两个类的头文件互相包含问题 - CSDN博客  http://blog.csdn.net/a812073479/article/details/38542515

    我们知道,当一个类(设类A)中包含另一个类(设类B)的对象时,必须在该文件中包含另一个类的头文件,如果两个类都互用到了对方的对象,理论上就要互相包含头文件,但是这样是不可取的。贴出代码如下:

    这样是无法通过编译的,其原因是它们的头文件互相包含了,你包含我,我又包含你,没完没了!

    为了解决这个问题,只需要去掉一个或则都去掉包含的头文件语句即可,为了要去掉包含的头文件

    语句,就不能在类中定义另外一个类的对象,而我们却是要在该类中使用另外一个类的对象,那么

    就可以利用对象的指针,而用对象的指针却可以不用包含头文件,做简单的声明即可。这样就打破

    了你包含我,我包含你的情况。(当然也可以利用全局对象、类的继承来解决!)

    根据情况,可以分为是否使用类的对象:(这里使用类的对象是指将对象当作类的成员)

    1、如果在A类中使用了B类的对象,那么就必须包含B类的头文件,而B类中就不能使用A类的对象了,

    这时就可以用对象的指针,用对象的指针,可以作简单的声明即可代替头文件的包含。此类情况的

    代码如下:

     

      

    最后应该注意,B类中使用的是指针,所以使用前必须先初始化,让其指向一个存在的对象;

    另外,为了通过指针使用A类的成员函数,那么就在B类的源文件中加上包含A类的头文件语句。

    2、两个类中互相使用了对方的指针,这样的情况很简单,分别在各自的头文件中声明一下使用的类,

    而在各自的源文件中包含对方的头文件即可。(也可以根据情况1来解决)

    这样就有效解决了头文件互相包含的问题。

    参考资料:http://blog.sina.com.cn/s/blog_6e04a8350100sonp.html

    http://blog.csdn.net/yang_lang/article/details/6767439

  • 相关阅读:
    P4995 跳跳!
    P4306 [JSOI2010]连通数
    P1339 [USACO09OCT]热浪Heat Wave
    P2002 消息扩散
    P3388 【模板】割点(割顶)
    P1656 炸铁路
    P2863 [USACO06JAN]牛的舞会The Cow Prom
    P1516 青蛙的约会
    3.从尾到头打印链表
    2.替换空格
  • 原文地址:https://www.cnblogs.com/nanzhi/p/8439121.html
Copyright © 2011-2022 走看看