在 C 中创建共享彼此实例的类
尝试在 C 中创建两个类,其中每个类都需要一个对象如果将其他类作为成员,则可能会发生编译错误。这是因为直接对象包含会导致内存分配无限循环。
解决方案:使用指针作为类成员
要避免此问题,请创建指针作为类成员而不是直接对象。这种方法涉及前向声明来宣布类的存在,而不提供其完整定义。
在 bar.h 中:
#ifndef BAR_H #define BAR_H class foo; // Forward declare foo class bar { public: foo* getFoo(); protected: foo* f; }; #endif
在 foo.h 中:
#ifndef FOO_H #define FOO_H class bar; // Forward declare bar class foo { public: bar* getBar(); protected: bar* f; }; #endif
在各自的 .cpp 文件中,包含其他类的标头:
// foo.cpp #include "foo.h" #include "bar.h" // bar.cpp #include "bar.h" #include "foo.h"
这种方法打破了循环引用循环,并允许创建通过指针利用彼此实例的类。
以上是如何在 C 中创建相互共享实例的类?的详细内容。更多信息请关注PHP中文网其他相关文章!