问题标签 [cyclic-reference]

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 回答
857 浏览

c - 循环依赖——结构和函数指针相互引用

由于结构和函数指针之间的循环依赖关系,我无法编译以下程序。

// fnPtr.cpp : 定义控制台应用程序的入口点。//

我收到以下错误:

错误 7 错误 C2039:“sFunPtr”:不是“gInStruct”的成员 c:\users\saurabh17g\documents\visual studio 2010\projects\fnptr\fnptr\fnptr.cpp 31

错误 3 error C2062: type 'int' unexpected c:\users\saurabh17g\documents\visual studio 2010\projects\fnptr\fnptr\fnptr.cpp 7

错误 1 ​​错误 C2065: 'gStruct' : 未声明的标识符 c:\users\saurabh17g\documents\visual studio 2010\projects\fnptr\fnptr\fnptr.cpp 7

错误 2 错误 C2065: 'pStr' : 未声明的标识符 c:\users\saurabh17g\documents\visual studio 2010\projects\fnptr\fnptr\fnptr.cpp 7

错误 4 错误 C2146:语法错误:缺少 ';' 在标识符“sFunPtr”之前 c:\users\saurabh17g\documents\visual studio 2010\projects\fnptr\fnptr\fnptr.cpp 10

错误 5 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 c:\users\saurabh17g\documents\visual studio 2010\projects\fnptr\fnptr\fnptr.cpp 10

错误 6 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 c:\users\saurabh17g\documents\visual studio 2010\projects\fnptr\fnptr\fnptr.cpp 10

如果我注释第一个 typedef 并取消注释第二个 typedef

错误 4 错误 C2039:“sFunPtr”:不是“gInStruct”的成员 c:\users\saurabh17g\documents\visual studio 2010\projects\fnptr\fnptr\fnptr.cpp 31

错误 1 ​​错误 C2146:语法错误:缺少 ';' 在标识符“sFunPtr”之前 c:\users\saurabh17g\documents\visual studio 2010\projects\fnptr\fnptr\fnptr.cpp 10

错误 2 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 c:\users\saurabh17g\documents\visual studio 2010\projects\fnptr\fnptr\fnptr.cpp 10

错误 3 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数 c:\users\saurabh17g\documents\visual studio 2010\projects\fnptr\fnptr\fnptr.cpp 10

请让我知道一个可能的答案。提前致谢, Saurabh

0 投票
1 回答
111 浏览

c++ - 循环模板

假设模板类 A 定义如下:

假设模板类 B 定义如下:

理想情况下,这些类将在具有内联实现的单独标头中定义。但是,这会导致循环包含问题。一种解决方案是将模板类的实现放入 cpp 文件中。但是,这需要专门的模板实例化。

有没有办法保持类的内联实现并避免循环包含依赖?如果可能的话,我想避免使用指针。

谢谢,

山姆

0 投票
2 回答
190 浏览

c++ - 循环构造函数

假设结构 A 和 B 是定义如下的单例结构:

假设文件结构被组织,以便代码可以编译。

第一次调用A::shared_a,会构造A的共享实例。A的共享实例的构造函数会调用B::shared_b,B::shared_b会构造B的共享实例。接下来,共享的构造函数B 的实例将调用 A::shared_a。但是,A 的共享实例还没有完成它的构造函数!因此,这些构造函数将无限循环。

为了防止这样的循环,我可以合并类 A 和 B,但我想避免这样做。有没有更优雅的解决方案?

谢谢,

山姆

0 投票
1 回答
175 浏览

inversion-of-control - 使用 Ninject 3.0 常规绑定进行装饰时出现循环依赖错误

请参阅下面的示例代码。它是一个过于简化的场景,用于演示我在使用该WhenInjectedInto方法绑定时遇到的问题。这一直适用于 ninject 的早​​期版本。但是有些如何升级到 3.0 我看不出问题出在哪里。WhenInjectedInto如果方法得到正确应用,我不应该得到一个循环依赖异常(即装饰器被注入自身) 。

另请注意,这是一个过于简化的场景,因此类和接口遵循约定,因此对于此代码示例,可能可以使用默认约定和更少的 ioc 代码来实现解决方案,但请记住我的实际场景我不会'没有类和接口如此流畅地遵循约定。

0 投票
1 回答
457 浏览

maven - 仅编译测试时的 Maven 循环依赖 - 如何轻松解决?

我正在对一个用于 Maven 的旧项目进行现代化改造。该项目非常大,其中包含大约 30 个模块。

就主要源代码而言,我设法让所有代码正确编译并建立依赖关系。它确实有效,并且可以通过 Maven 的 tomcat 插件运行。

问题在于编译测试。

不幸的是,这家公司没有对他们的测试代码应用相同的依赖限制,就像他们对主要源代码所做的那样。

例如,在主源代码中,C 依赖于 B,而 B 依赖于 A。然而,A 依赖于 C 来运行它的测试。显然,Maven 会抱怨说存在循环依赖。

除了彻底修复代码(遗憾的是,这个项目不会发生 - 它有数千万行),有没有办法告诉 Maven,“请先编译所有主要源代码,然后编译所有之后的测试代码”?或者有没有围绕这个问题的任何其他解决方案?

谢谢

0 投票
4 回答
5719 浏览

python - 如何在 Python 中解决这种循环依赖

我遇到了如下所示的一些情况,其中每个类都需要另一个类并且它创建了循环依赖。我在使用 ctypes 包装一些 c 代码时遇到了这种类型的情况。已经有很多关于这个主题的帖子,但我觉得它们没有帮助,我需要一些例子。有关解决此问题的任何想法/示例都会有所帮助。

0 投票
4 回答
40591 浏览

maven - Maven 说我在多模块项目中有一个循环引用,但不知道为什么

我有一个看起来像这样的多模块项目:

  • 模块1
    • pom.xml
  • 模块2
    • pom.xml
  • pom.xml

module2 中的 pom.xml 依赖于 module1。

当我运行 mvn clean compile 时,出现以下错误:

反应堆中的项目包含循环引用。

这是我在 module1 中的依赖项:

我不明白为什么它说有一个循环引用。即使我在 module1 上执行 mvn dependency:tree 我得到以下信息:

在我看来,module1 中没有对 module2 的任何引用。那么循环引用从何而来?

编辑:这是调试日志:

0 投票
1 回答
805 浏览

python - 使用包导入模块语法时,Python 循环导入失败

可能重复:
Python 中的循环模块依赖项和相对导入

考虑以下python中循环导入的示例:

主要.py:

包/__init.py__:

包/foo.py:

包/bar.py:

运行 main.py 会导致异常:

将 bar.py 更改为:

将使示例工作。

为什么会这样?不应该 *import package.module" 和 "from package import module" 是等价的(除了后者中的额外名称绑定)?

0 投票
2 回答
10342 浏览

c++ - shared_ptr 和循环引用

我正在尝试使用 的循环引用boost::shared_ptr,并设计了以下示例:

哪个输出

是不是我误解了提到的循环引用boost::shared_ptr?因为,我期望间接引用p1后评论1)2). 所以这段代码不需要boost::weak_ptr!那么weak_ptr需要 s 的循环引用是什么?

提前致谢。

0 投票
2 回答
365 浏览

core-data - 与 Core Data 的关系循环

我对 Core Data 有一个概念上的问题。

我有一个名为 OBJ 的实体,它在关系中有一个 OBJ 实体。"An error occured."当我测试我的模型时,我会收到非常有说服力的信息。

对于每个 OBJ 实体,我希望定义一个或多个与另一个 OBJ 实体关联的 ACTION。所以我想我的错误来自一个循环,但不确定。

起初,我定义了一个逆向关系(正如文档所建议的,关系应该总是有它的逆向关系):

好吧,它不起作用,因为 OBJ 总是引用它自己。因此,我已经解耦了关系。ACTION 指向一个 OBJ,而 OBJ 指向几个 ACTION,没有互惠性。错误信息。

我的基本想法是,如果另一个 OBJ 的状态允许,与特定 OBJ 关联的每个动作都可以运行。

如何将其构建为 MVC 一致?基本的想法似乎很简单,只是他的成就不那么简单。这是一个错误的核心数据建模吗?我在控制器级别犯了错误吗?界面?请注意,在这个级别上,我没有编写任何代码。

谢谢!