異なるファイルに3つのクラスがあります。
X
|
-------
| |
Y Z
継承されたクラスYとZのいくつかのオブジェクトを作成します。
クラスZの特定の関数は、クラスYによってフラグ変数が設定されている場合にのみ実行する必要があります。
このフラグ変数をどこに作成する必要がありますか(どのクラス)、宣言はどのようにする必要がありますか(静的/外部)?
異なるファイルに3つのクラスがあります。
X
|
-------
| |
Y Z
継承されたクラスYとZのいくつかのオブジェクトを作成します。
クラスZの特定の関数は、クラスYによってフラグ変数が設定されている場合にのみ実行する必要があります。
このフラグ変数をどこに作成する必要がありますか(どのクラス)、宣言はどのようにする必要がありますか(静的/外部)?
悪名高いフラグの代わりにテンプレートメソッドを検討してください。
フラグの影響を受けるのが Z のみの場合、フラグは Z にある必要があります。しかし、すべてがにおいがします-フラグはインスタンスではなくクラスによって設定されます。実用的な場合は、フラグではなくポリモーフィズムを使用してください。
これは奇妙なデザインだと思います。継承されたクラス間の依存関係を作成します。
メソッド (およびフラグ変数) は、親クラス X にある必要があります。
(編集)上で書いたものを改良/置換するために、変数は基本クラスにある可能性があり、Yクラスは変数(Setter)を設定し、Zクラスは基本クラスから値を「取得」するメソッドを持ちます.
最良の答え: Anton Gogolev の言うとおり、テンプレートを使用してください。
(それ以外の場合は、プライベート列挙型変数を使用します。たとえば、type.x/type.y などを返す GetType() を使用します)
2 つの Y オブジェクトがあり、そのうちの 1 つだけにフラグが設定されている場合はどうなるでしょうか? 3 つの Z オブジェクトのうちどれが影響を受けますか? この質問は、あなたの設計に欠陥があることを示唆しています。