コントローラー クラスにstd::map<int, std::shared_ptr<base>>
m_items があります。
コントローラーは外部の消費者にアイテムを提供し、それらはベースのみを必要とするため、ポリモーフィズムはそのためにうまく機能します。ただし、特定のイベントが発生した場合、コントローラーは内部的に特定のタイプのアイテムを更新または削除する必要があります。更新は性質が大きく異なり、イベントごとに異なるデータ セットが必要になるため、基本クラスに一般的な「更新」メソッドを含めることはできません。必要なのは、イベントが発生したときに特定の派生型 (派生型ポインターにキャストする必要がある) のみを反復処理する方法です。1 つの解決策は、ベースに a を追加することですEDerivedType GetType()
。各派生型は異なる列挙値を返すため、反復時に必要な型と比較できます。これは機能しますが、OO アプローチではありません。
誰でもこれを行うためのよりエレガントな方法を提案できますか?
ありがとう...