我一直在环顾四周,但没有发现任何真正帮助我解决这个问题的问题。我不是很有经验,所以也许这个问题是微不足道的,这是我缺乏知识的问题。
我正在尝试解决一个问题。我们的系统有一个记录器,它获取不同的日志并将它们放入 SharedMemory
.
但是,从我们的一个类(class)( StateMachine
)我不能使用 Loogger
因为递归:
Logger.h
包括SharedMemory.h
SharedMemory.h
包括StateMachine.h
如果我包括
Logger.h
在 StateMachine.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
我想知道是否有任何技巧可以使包含以这种方式工作,而无需进行架构更改(我的经理似乎不喜欢)。
最佳答案
关于c++ - 包含中的递归(文件 1 包含包含文件 1 的文件 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63171287/