【问题标题】:How can an element of a container access its container's "owner"?容器的元素如何访问其容器的“所有者”?
【发布时间】:2017-04-18 04:13:44
【问题描述】:

我有这个架构:(简化)

class A {
    container<B*> c
}

class B {
    A* owner
}

这些类位于不同的头文件中,对于这种架构,我必须包含:

  • A.h 中的 B.h
  • A.h in B.h

我得到了循环依赖。我可以通过前向声明来解决这个问题,但我想解决设计问题。 (如果可能的话。)

A 的容器中的 B-s 如何在没有前向声明的情况下访问 A?

或者前向声明是唯一的方法?

【问题讨论】:

    标签: c++ architecture circular-dependency forward-declaration


    【解决方案1】:
    1. 使用前向声明。这限制了您避免访问内联函数(在标头中)中的类成员,但可以很好地使用指针。

    2. 使用模板设计

    3. 使用共享基类来获取您需要的所有接口。

    【讨论】:

      【解决方案2】:

      你说:

      这些类位于不同的头文件中,对于这种架构,我必须包含:

      • A.h 中的 B.h
      • A.h in B.h

      不,你没有。

      前向声明就足够了,因为您在 A.h 中使用 B* 在 B.h 中使用 A*

      啊.h

      class B;
      class A {
          container<B*> c
      }
      

      B.h

      class A;
      class B {
          A* owner
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-04
        • 2018-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多