gpt4 book ai didi

c++ - 包含中的递归(文件 1 包含包含文件 1 的文件 2)

转载 作者:行者123 更新时间:2023-12-02 09:59:54 26 4
gpt4 key购买 nike

我一直在环顾四周,但没有发现任何真正帮助我解决这个问题的问题。我不是很有经验,所以也许这个问题是微不足道的,这是我缺乏知识的问题。
我正在尝试解决一个问题。我们的系统有一个记录器,它获取不同的日志并将它们放入 SharedMemory .
但是,从我们的一个类(class)( StateMachine )我不能使用 Loogger因为递归:

  • Logger.h包括SharedMemory.h
  • SharedMemory.h包括StateMachine.h

  • 如果我包括 Logger.hStateMachine.h ,编译错误到处出现。首先,我试图通过创建第二个 SharedMemory 来解决这个问题。专用于 Logger并且不包括 StateMachine.h .
    通过这种方法,编译错误得到了解决,但我的经理不喜欢这种设计解决方案。
    我还尝试更改包含顺序,并在包含之前声明类但它不起作用(例如,声明 class SharedMachine ;在 #include SharedMachine.h 之前)
    包括是这样的:
    在 StateMachine.h
    #ifndef SM_H

    #define SM_H

    #include <map>

    /* (different includes) */

    #include Logger.h
    在 Logger.h
    #include SharedMemory.h
    在 SharedMemory.h
    #include StateMachine.h
    我想知道是否有任何技巧可以使包含以这种方式工作,而无需进行架构更改(我的经理似乎不喜欢)。

    最佳答案

  • 尝试将包含从头文件移动到源 (*.cpp) 文件
  • 使用前向声明:What are forward declarations in C++?
  • 更改接口(interface)以使用指针或对所需类型的引用而不是使用实际类型,以便使用前向声明(如果需要)
  • 关于c++ - 包含中的递归(文件 1 包含包含文件 1 的文件 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63171287/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com