c++ - 复杂的循环依赖

标签 c++ oop circular-dependency

C++ 中解决循环依赖的最佳实践是什么?

我可以使用前向声明,但随后我得到了 pointer to incomplete class type is not allowed 错误。这是否意味着两个使用彼此指针的类不能依赖?

此外,我考虑过转发声明每个类,然后将解决方案的每个 header 包含在 main.cpp 中,这样它们就都在一个地方了。你会推荐它吗?

下面是整个项目的一个片段,如果问题在我熟悉的示例中得到了更好的解释,您可以引用它,但这只是理论上的。 谢谢

Models depending on each other

最佳答案

你只需要正确使用前向声明:

  1. 将所有代码放入cpp文件
  2. 只在头文件中声明类
  3. 在头文件中:
    1. 如果您只使用指针或引用,请使用前向声明。
    2. 否则你要包含头文件。 (不要添加不需要的包含)
  4. 在cpp文件中
    1. 包含您需要的所有头文件。

注意:添加包含守卫。

如果没有实际的声明,很难真正做到这一点。该图很好,但没有足够的信息。一张图片可能胜过一千个单词,但是一种精确定义的语言可以非常紧凑地传达更准确的信息(不像英语及其不一致)。

关于c++ - 复杂的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5363542/

相关文章:

python - Python中的循环导入依赖

javascript - 由于 URI 错误,无法连接到 MongoDB

C++ 枚举问题和 g++ 中可能的循环依赖

c++ - QTextEdit 中的 Qt textChange()

java - 给定场景的类/接口(interface)设计方法

php - 使用两种语言时如何决定是使用 JavaScript 还是 PHP 对象?

python - 我应该传递对象还是在构造函数中构建它?

c++ - 从 header 中删除静态成员

c# - 使用 Isolated COM 时应用程序在 CoCreateInstance 期间挂起

c++ - 处理超出范围的索引