c++ 两个类能互相引用对方吗
时间: 2023-08-17 13:32:28 浏览: 119
C++中两个类互相包含的策略
在 C++ 中,两个类是可以互相引用对方的。这种情况通常称为循环依赖(circular dependency),即 A 类依赖 B 类,而 B 类又依赖 A 类。
为了让两个类能够互相引用对方,需要在头文件中使用前向声明(forward declaration)。前向声明是指在使用一个类之前,声明这个类的存在,但不提供实现细节。例如,下面的代码演示了如何在两个类中互相引用对方:
```cpp
// A.h
#pragma once
#include "B.h"
class A {
public:
A();
void setB(B* b);
private:
B* m_b;
};
// B.h
#pragma once
#include "A.h"
class B {
public:
B();
void setA(A* a);
private:
A* m_a;
};
// A.cpp
#include "A.h"
A::A() : m_b(nullptr) {}
void A::setB(B* b) {
m_b = b;
}
// B.cpp
#include "B.h"
B::B() : m_a(nullptr) {}
void B::setA(A* a) {
m_a = a;
}
```
在上面的代码中,A 类中包含一个指向 B 类对象的指针,而 B 类中也包含一个指向 A 类对象的指针。为了避免头文件中的互相引用问题,A.h 和 B.h 头文件中都使用了前向声明的方式声明对方的存在。这样,就可以在不互相引用对方的情况下,实现两个类的互相引用。
阅读全文