私は現在、クラスライブラリの設計段階にあり、「RTTIを使用せずに中央マネージャーで多様なクラスを管理する」または「dynamic_castを回避するためのパターン」に似た質問に出くわしました。
基本クラスBaseと、 BaseのサブクラスであるDerivedAとDerivedBの2つのクラスを持つクラス階層があるとします。私のライブラリのどこかに、 DerivedAとDerivedBの両方のタイプのオブジェクトのリストを保持する必要があるクラスがあります。さらに、このクラスは、タイプに応じて両方のタイプでアクションを実行する必要があると想定します。明らかに、ここでは仮想関数を使用してこの動作を実装します。しかし、 DerivedA型のすべてのオブジェクトを提供するために管理クラスが必要な場合はどうなりますか?
クラス階層のサブセットに対してのみアクションを実行する必要があるため、これは悪いクラス設計の指標ですか?
それとも、私の管理クラスがBaseのリストを使用するのではなく、 DerivedA用とDerivedB用の2つのリストを使用する必要があるということですか?したがって、両方のタイプでアクションを実行する必要がある場合は、2つのリストを反復処理する必要があります。私の場合、階層に新しいサブクラスを追加する必要がある可能性は非常に低く、現在の数は約3または4サブクラスです。