在 C++ 中解决 3 类 的循环包含

Resolve circular include of 3 classes in C++

我有 3 个 class,我将它们称为 A、B 和 C(本例中的名称是任意的)。 所有这 3 个 class 都由一个 header-file 和一个 cpp-file 组成。

我有以下依赖项:

我已经尝试了几个选项(包括这里的 header,那里的 class 的 forward-declaration),但编译从未成功。我也无法从仅解决 2 classes.

之间的循环包含问题的问题的答案中提取任何有用的信息

编辑: 这是我当前设置的最小(希望足够)示例:
A.h

class A {
private:
    B myB;
};

B.h

class B {
private:
    A* myA;
    C myC;
};

C.h

class C {
private:
    A* myA;
}

我也许还应该注意到 B::myA 和 C::myA 总是指向相同的 A-instance。

因为 class C 只包含一个指向 class A 指针 ,它不需要完整的 definition 用于 AB(它不使用);因此,只需声明 声明 A 作为 class 就足够了:

C.h

class A; // Declare that A is a class - then we can have a pointer to it...
class C {
private:
    A* myA;
}

Class B 需要 C 定义 ,因为它包含一个 实例 C;并且,像 class C 一样,只需将 A 声明为 class(正如 C.h 中已经完成的那样)就可以:

B.h

#include "C.h" // Note: This header already declares "A" as a class!
class B {
private:
    A* myA;
    C myC;
};

Class A 需要 B 定义 ,因为它包含一个 实例 B 个。但请注意 B.h 已经包含 C.h:

A.h

#include "B.h"
class A {
private:
    B myB;
};

请注意,使用 ABC 中的一个或多个的任何其他文件只需要包含 A.h header,因为这样本身将包括其他人。