在 C++ 中处理循环引用可以采用前向声明和指针的方式来解决。前向声明是在一个类中只声明另一个类的指针,而不包含完整的类定义,这样就可以避免循环依赖。
例如,如果有两个类 A 和 B,彼此互相引用,可以这样处理:
// A.h#pragma onceclass B; // 前向声明class A {private: B* b;public: A(); void setB(B* b);};// A.cpp#include "A.h"#include "B.h"A::A() { b = nullptr;}void A::setB(B* b) { this->b = b;}// B.h#pragma onceclass A; // 前向声明class B {private: A* a;public: B(); void setA(A* a);};// B.cpp#include "B.h"#include "A.h"B::B() { a = nullptr;}void B::setA(A* a) { this->a = a;}这样就可以避免循环引用问题。在使用时,可以先声明一个类的指针,然后在需要时再进行完整的定义和初始化。


