【发布时间】:2019-12-02 03:00:15
【问题描述】:
我有 3 个类,我将它们称为 A、B 和 C(此示例中的名称是任意的)。 所有这 3 个类都由一个头文件和一个 cpp 文件组成。
我有以下依赖项:
- A 需要知道 B,因为 A 有 B 类型的成员
- B 需要知道 A 和 C,因为 B 有两种类型的成员
- C 需要知道 A,因为 C 有一个类型为 A 的成员
我已经尝试了几个选项(在此处包含此标头,在此处包含类的前向声明),但编译从未成功。我也无法从仅解决 2 个类之间的循环包含问题的问题的答案中提取任何有用的信息。
编辑:
这是我当前设置的最小(希望足够)示例:
啊。
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 实例。
【问题讨论】:
-
I have tried out several options already (include this header here, forward-declaration of class there), but compilation was never succesful.前向声明是要走的路,我们需要一个minimal reproducible example。 -
向我们展示您的类的(可能是缩写的)声明和定义,我 100% 确信这里有人会为您提供解决问题的方法(或者可能不止一个解决方案)。跨度>
-
我们真的需要看一个清楚的例子来说明你正在尝试做什么,尤其是关于哪些成员是指针/引用与整个对象。目前,我可以阅读您的解释,即希望每个 A 包含一个 B,然后每个 B 包含一个 A,这将导致无穷大,这是行不通的。
-
@TheUndeadFish 请求的示例已添加。
标签: c++ dependencies include header-files