【问题标题】:Communication between inherited classes继承类之间的通信
【发布时间】:2010-10-06 15:27:53
【问题描述】:

我在不同的文件中有 3 个类:

   X
   |
-------
|     |
Y     Z

我将创建几个继承类 Y 和 Z 的对象。

类 Z 中的特定函数只有在类 Y 设置了某些 flag 变量时才应执行。

我应该在哪里创建这个标志变量(哪个类)以及声明应该是什么样的(静态/外部)?

【问题讨论】:

  • 您能告诉我们更多关于 X、Y 和 Z 的信息吗?您的问题陈述很清楚,但很难理解为什么只有 Ys 能够设置只有 Zs 可以读取的标志。

标签: c++ inheritance class object communication


【解决方案1】:

考虑将template method 替换为臭名昭著的旗帜。

【讨论】:

    【解决方案2】:

    如果只有 Z 受其影响,则该标志应位于 Z 中。但是整个事情都闻起来了——标志是由类而不是实例设置的。在可行的情况下使用多态性而不是标志。

    【讨论】:

      【解决方案3】:

      我认为这是一个奇怪的设计;您将在继承的类之间创建依赖关系。

      方法(和标志变量)应该在父类 X 中。

      (编辑) 完善/替换我上面写的内容, 变量可以在基类中,Y 类将设置变量(Setter),Z 类将具有从基类“获取”值的方法。

      【讨论】:

        【解决方案4】:

        最佳答案:Anton Gogolev 所说的,使用模板。

        (否则使用私有枚举变量。例如:GetType() 返回 type.x/type.y 等)

        【讨论】:

          【解决方案5】:

          如果你有两个 Y 对象,而只有一个设置了标志怎么办?您的三个 Z 对象中的哪一个受到影响?该问题表明您的设计存在缺陷。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-08-25
            • 1970-01-01
            • 2023-03-31
            • 2019-03-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多