首页  >  文章  >  后端开发  >  如何使用前向声明在 C 中创建相互依赖的类?

如何使用前向声明在 C 中创建相互依赖的类?

Linda Hamilton
Linda Hamilton原创
2024-11-23 20:44:15896浏览

How to Create Interdependent Classes in C   Using Forward Declarations?

通过前向声明在 C 中创建相互依赖的类

在 C 中,如何在两个类之间建立关系,其中每个类都包含一个对象其他类类型?

直接对象嵌入

不幸的是,将每个类的对象直接嵌入到另一个类中是不可行的。这种循环引用会产生无限的空间需求。

解决方法:基于指针的关系

相反,我们可以利用指针来建立这种关系。为了打破循环依赖,我们使用前向声明。

前向声明

在类头(例如 bar.h 和 foo.h)中,我们声明另一个类的存在而不定义它:

// bar.h
class foo; // Declare that the class foo exists

class bar {
public:
  foo* getFoo();
protected:
  foo* f;
};
// foo.h
class bar; // Declare that the class bar exists

class foo {
public:
  bar* getBar();
protected:
  bar* f;
};

现在,每个标头都知道另一个类没有完整定义的类。

类实现

在相应的 .cpp 文件中,我们包含另一个标头以访问其完整定义:

// foo.cpp
#include "bar.h"

// ... Implementations of foo methods
// bar.cpp
#include "foo.h"

// ... Implementations of bar methods

用途main()

最后,在 main.cpp 中,我们可以创建类的实例:

#include "foo.h"
#include "bar.h"

int main() {
  foo myFoo;
  bar myBar;
}

此策略允许我们创建相互利用的类,而不会产生循环引用问题。

以上是如何使用前向声明在 C 中创建相互依赖的类?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn