我有3类在不同的文件之间的通信:继承的类
X
|
-------
| |
Y Z
我将创建
类Z A特定功能应该仅当被执行继承的类Y和Z.
的几个对象一些 标志变量由Y类设置。我应该在哪里创建这个标志变量(哪个类)以及声明应该是什么样的(static/extern)?
我有3类在不同的文件之间的通信:继承的类
X
|
-------
| |
Y Z
我将创建
类Z A特定功能应该仅当被执行继承的类Y和Z.
的几个对象一些 标志变量由Y类设置。我应该在哪里创建这个标志变量(哪个类)以及声明应该是什么样的(static/extern)?
考虑template method作为臭名昭着的旗帜的替代品。
该标志应该在Z中,如果它只有Z受其影响。但整个事情闻起来 - 标志由类而不是实例设置。在实际情况下使用多态而不是标志。
我认为这是一个奇怪的设计;您将在继承的类之间创建依赖关系。
的方法(和标志变量)应在父类X.
(编辑) 细化/替换一下我上面写的, 变量可能在基类中,Y舱会设置变量(Setter),并且Z类将具有将从基类“获取”该值的方法。
最佳答案:Anton Gogolev说,使用模板。
(也可以使用一个私人枚举变量使用例如:的GetType()返回type.x/type.y等)
如果你有两个Y对象,只有一个具有标志设置?您的三个Z对象中的哪一个受到影响?这个问题表明你的设计是有缺陷的。
你能告诉我们更多关于X,Y和Z吗?你的问题陈述很清楚,但很难理解为什么只有Y能够设置只有Z可以读取的标志。 – 2009-04-10 18:25:54