【发布时间】:2015-05-24 16:23:46
【问题描述】:
我知道这是一个反复出现的问题,但到目前为止,我基本上只看到了“如果你有相互导入,那么你做错了什么”的答案。
这就是为什么我有更多的一般理解问题而不是与某些特定代码相关的问题。
好的,举个例子。假设我有一个动态自动机的数据结构。自动机的状态是具有“转换”属性的结构。 “transitions”是一个动态链表。列表元素是具有 State 对象属性的结构...
所以:
// state.h
#include "transitionList.h"
State{
TransitionList transitions; // all transitions going out from this state
}
// tranistion.h
#include "state.h"
Transition{
Transition* next_transition; // the next transition in the TransitionList
State* successor; // a pointer to the next state in the automaton
}
// transitionList.h
#include "tranisiton.h"
TransitionList{
// *code* class for a linked list of transitions
}
所以我们有 state.h -> transistion.h -> transitionList.h -> state.h -> ...
这显然是循环的……但概念上的错误在哪里?从正式的角度来看,我不认为这是一个糟糕的布局。
请赐教:)
【问题讨论】:
-
那不是有效的 C++ 代码。
-
是的,它应该是更多的伪代码。
-
也许this 会有所帮助。
标签: c++ include circular-dependency