我有这种架构:(简化)
class A {
container<B*> c
}
class B {
A* owner
}
这些类在不同的头文件中,使用这种架构我必须包括:
Aaaand我得到了循环依赖。我可以通过前向声明解决这个问题,但我想解决设计问题。 (如果可能的话。)
如果没有前瞻性声明,A&#39容器中的B-s如何访问A?
或者是前瞻性宣言的唯一途径?
答案 0 :(得分:1)
你说:
这些类在不同的头文件中,使用这种架构我必须包括:
- B.h in A.h
- A.h in B.h
不,你没有。
前向声明就足够了,因为你在A.h中使用B*
而在B.h中使用A*
。
class B;
class A {
container<B*> c
}
class A;
class B {
A* owner
}
答案 1 :(得分:1)
使用前向声明。这限制了你无法访问内联函数(在标题中)中的类成员,但这很好地适用于指针。
使用模板设计
使用获得所需接口的共享基类。