继承类之间的通信

时间:2009-02-10 13:08:08

标签: c++ inheritance class object communication

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

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

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

只有当Y类设置了一些 flag 变量时,才应执行Z类中的特定功能。

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

5 个答案:

答案 0 :(得分:6)

template method视为臭名昭着的旗帜的替代品。

答案 1 :(得分:1)

标志应该在Z中,如果它只是由它影响的Z.但整个事情闻起来 - 标志是由类而不是实例设置的。在可行的情况下使用多态而不是标记。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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