通过前向声明在 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中文网其他相关文章!