问题标签 [circular-dependency]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3319 浏览

c++ - C++循环引用问题

我有 2 个课程:DataObjectDataElement. DataObject保存指向(仅)DataElements 的指针,aDataElement包含指向多种类型的指针,其中 a DataObject.

这以前没问题,因为我只使用指向DataObjects in 的指针,所以在标头中DataElement的前向声明就足够了。DataObjectDataElement

但是,现在我尝试向 . 添加一个析构函数DataElement,其中我需要在DataObject. 对此,编译器说:

我该如何解决这个问题?前向声明显然是不够的,而我不能包含完整的标头DataObject,因为这又给了我一个循环依赖。

提前致谢!

0 投票
5 回答
9417 浏览

c++ - C++ 中的循环依赖

事实:

  • 我有两个主要类别:经理和专家。
  • 有几种不同类型的专家。
  • 专家通常需要其他专家的帮助才能完成工作。
  • 经理认识所有的专家,最初每个专家只认识他们的经理。(这就是问题。)
  • 在运行时,管理器创建并存储专家列表。然后 Manager 遍历列表并要求每个专家进行初始化。在初始化期间,每个专家都要求经理向他们提供满足某些描述的其他专家。一旦完成,经理就会进入一个循环,在这个循环中,专家被依次要求执行他们的专业任务。

对我来说,这似乎是一个不错的模式,但是由于经理有专家列表,而专家有经理,我遇到了循环依赖问题。

这是一个我应该以某种方式向前声明一个类的存在的情况吗?(如果是这样,如何?)或者我应该使用一些设计模式来解决这个问题?(如果是这样呢?)另外......我虽然模式本身很好,所以我不介意有人帮助我理解为什么这是一件坏事。

0 投票
1 回答
408 浏览

c# - 循环依赖

我有 2 个项目

  • UI:包含我所有的表单和用户控件
  • Translation:包含我用于翻译 UI 的翻译代码

Ui 项目显然需要对翻译项目的引用,因为它需要翻译。

由于我在 UI 中定义了需要特殊翻译的自定义用户控件。翻译项​​目需要知道类型,因此翻译也需要对UI的引用,从而导致循环依赖。

这实际上是一个问题吗?是的,我该如何最好地解决这个问题?我是否取出自定义类型并将它们放在单独的项目中?

谢谢

0 投票
1 回答
503 浏览

c++ - C++:概念循环包含问题

我正在为游戏引擎制作基于组件的实体系统。

我有一个实体类,它必须包含组件基类标头才能定义组件数组private Component* components[ 123 ]

但是,在组件基类中我必须定义一个private Entity* ownerEntity,因为组件知道它属于谁是至关重要的!

这导致 Entity.h 需要 Component.h ,反之亦然 -> 循环引用

我该如何解决这个问题?

0 投票
2 回答
3794 浏览

c++ - 处理父/子类关系中的循环包含

假设我已经创建了一个类,比如说Parent,它与 具有组合关系Child。父类拥有一个子列表。

我希望所有孩子都持有对父母的引用,所以每个孩子都持有一个Parent指针。

这将导致循环包含。我指的Childparent.h,我指的Parentchild.h。因此Parent将需要包含Child,哪些需要包含Parent

解决此问题的最佳方法是什么?

0 投票
4 回答
548 浏览

c++ - 如何解决 Boost::BGL 模板<->类循环依赖?

我在使用 Boost 图形库的邻接列表时遇到问题。这似乎是一个循环依赖问题:我有一个模板的 typedef T,它使用了某个类 A。另外,A 存储了一个指向 T 类型对象的指针。现在编译器告诉我,T 没有命名一个类型。

以下是我更具体的文件的摘录:

如何解决这个依赖/包含顺序问题?

另一个编辑:我只是想到 edge_descriptor 的类型可能是像 int 这样的原始类型。这将解决问题,因为我可以用普通的 int 变量替换 Lane 的 edge_descriptors,因此可以删除 tie.hpp 中包含的 graphdefinitions.hpp。不幸的是,我的想法很糟糕,我必须找到另一个解决方案。Edge_descriptor 类型似乎是有原因的......

0 投票
2 回答
1456 浏览

python - 为什么我不能在 python 中更改另一个模块变量?

我试图让第二个模块在循环导入中修改第一个模块的变量,但它似乎不起作用。

我有两个问题:1)为什么这不起作用/从语言开发的角度来看这是什么原因?2)是否有任何简单的解决方案可以让我以稍微不同的方式做同样的事情?

一个.py:

b.py:

0 投票
1 回答
928 浏览

unity-container - 是否可以在 Unity 中创建具有循环引用的对象?

0 投票
1 回答
3393 浏览

c - C中函数指针typedef的循环引用

我想定义一个带有可交换哈希函数的哈希表。散列函数将采用指向散列表的指针和要散列的键,返回一个 int,如下所示:

其中哈希表存储了一个指向函数的指针,该函数将用于哈希键:

不幸的是,这会创建一个循环引用。

我需要哈希函数定义中指向哈希表的指针,所以我可以对哈希表大小进行取模,这样它就不会超过最大桶数。我需要哈希表中的哈希函数,这样我就不必到处传递哈希函数指针。

我意识到这将导致如下代码:

这有点奇怪,但我很好。

以任一顺序放置 typedef 都不起作用。我是否必须在哈希表中使用长定义,然后再执行 typedef,还是有更好的方法?

这一切都是用纯 C 语言设计的,而不是 C++ 语言。ANSI C 解决方案首选!

0 投票
6 回答
667 浏览

.net - 解决循环依赖

我在 Visual Studio 解决方案中有两个类项目。由于项目的性质,两个项目相互引用,因为它们需要彼此的服务(想想“我挠你的背,你挠我的”短语)。

Visual Studio (2010) 不允许我从项目 a 添加对项目 b 的引用,因为项目 a 已经引用了项目 b。

有什么策略可以解决这种循环依赖?

谢谢