【问题标题】:Can two two C++ projects refer each other?两个两个 C++ 项目可以相互引用吗?
【发布时间】:2016-03-13 17:53:48
【问题描述】:

我在 Eclipse 中有两个独立的项目。 项目A需要参考项目B,项目B需要参考项目A。

相互推荐是否可行且明智?

更新

ProjectB 使用了 Project A 的许多类(一种库),而 Project A 只需要 Project B 的一个特定类(因为 Project A 在项目 B 中收到了该类的对象,因此 Project A 需要该类type_cast 并做点什么)

【问题讨论】:

  • 循环依赖并不是什么好主意。有许多技术可以解耦这种依赖关系,即提供导入/导出接口。
  • 项目A是否需要参考项目B的部分?这个想法是将项目重构为可以共享的有用部分。
  • 这两个项目是独立可执行的,还是一个被编译为静态库?
  • 这实际上取决于您从一个项目到另一个项目的引用/方式。您能否详细说明您实际尝试做的事情?
  • @ThomasMatthews ProjectB 使用Project A 的许多类(库的一种),Project A 只需要Project B 的特定类(因为Project A's 在@987654325 中收到了该类的对象@,所以 Project A 需要那个类到 type_cast 并做一些事情)

标签: c++ eclipse coding-style


【解决方案1】:

不确定 Eclipse 是否可以,我想不可以。但这肯定不是一个好主意。

引用应该朝着一个方向,避免循环。假设您想在 B 中引用来自 A 的代码,但发现 B 也需要来自 A 的代码。您可以尝试将这部分代码从 A 移动到 B。

如果这没有意义,请使用 A 和 B 使用的公共代码创建一个新项目 C。

顺便说一句,这与 C++ 并没有真正的关系。它适用于任何编程语言,甚至在非编程项目中。

编辑:在阅读了你的一个 cmets 之后,(“......项目 A 只需要一个特定的项目 B 类(因为项目 A 收到了一个类的对象......”)看起来你可以解决这个问题使用某种依赖注入:

A 中的类不应依赖于 B 中定义的类,而应依赖于 B 中特定类派生自的通用接口(抽象类)。只有当 B 使用 A 时,它才会传递特定类的对象。好了,说的很简单了,如果需要更多解释,直接搜索依赖注入,这绝对是一个重要的概念。

【讨论】:

  • 请举例说明dependency injection。我对这个概念很陌生
  • @UtkalSinha:已添加简要说明。
【解决方案2】:

从根本上说,软件单元可以指软件单元。

项目是一个或多个软件单元的容器。一个项目也可能有一些属性,例如包含目录和库(软件单元)。

您需要重构项目,以便它们可以共享软件单元。不要担心“引用”诸如包含路径和程序设置之类的常见事物。您可以将这些属性放入环境变量中。

如果需要共享多个函数文件中的单个函数,请将其放入单独的文件中。与类类似。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多