首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >避免头文件的循环依赖

避免头文件的循环依赖
EN

Stack Overflow用户
提问于 2011-01-27 21:08:42
回答 8查看 67.3K关注 0票数 57

对于如何避免头文件的循环依赖,你有什么好的建议吗?

当然,从一开始,我就试图设计出尽可能透明的项目。然而,随着越来越多的功能和类被添加,项目变得越来越不透明,循环依赖开始发生。

是否有任何通用的、经过验证的和有效的规则?谢谢。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-01-27 21:13:35

如果你有循环依赖,那么你做错了什么。

例如:

代码语言:javascript
复制
foo.h
-----
class foo {
public:
   bar b;
};

bar.h
-----
class bar {
public:
   foo f;
};

是非法的,你可能想:

代码语言:javascript
复制
foo.h
-----
class bar; // forward declaration
class foo {
   ...
   bar *b;
   ...
};

bar.h
-----
class foo; // forward declaration
class bar {
   ...
   foo *f;
   ...
};

这是可以的。

一般规则:

  1. 确保每个标头都可以单独包含。
  2. 如果可以使用转发声明,请使用它们!
票数 57
EN

Stack Overflow用户

发布于 2011-01-27 21:41:20

  • 在可能的情况下使用转发声明。如果只有cpp文件需要,
  • 会将任何头文件包括的头文件移出头文件并放入相应的cpp文件。实现这一点的最简单方法是在单独类之间的交互点将#include "myclass.h"作为myclass.cpp.
  • Introducing接口中的第一个包含,这有助于减少依赖项。
票数 19
EN

Stack Overflow用户

发布于 2011-01-27 22:00:19

我遵循的一些避免循环依赖的最佳实践是,

  1. 坚持面向对象的开发原则。不要包含头文件,除非包含的类与当前类处于组合关系中。使用转发声明instead.
  2. Design抽象类作为两个类的接口。通过该接口进行类的交互。
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4816698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档