/BaseManagerSample

要素管理クラスのサンプル

Primary LanguageC++

BaseManagerSample

要素管理クラスのサンプルです。 std::vectorで適当な要素を削除する方法をいっつも忘れるしややこしくなるので、 要素の管理を仲介してくれるBaseManagerクラスを作りました。 BaseManagerクラスが管理する要素をBaseElementクラスとして、 使いたいときにそれぞれを継承したクラスを作ります。 要素を更新すると、要素自身が削除済みフラグを立て、 それを要素管理側が検知して要素を削除するという仕組みになります。

BaseElementクラス

管理される要素の基底クラスです。 要素はupdate関数が呼ばれると自分自身を更新します。 この更新によって自分が削除対象となった際に、update内で削除関数clearを呼びます。 これにより、その要素は削除対象となって、BaseManagerで後に削除されることとなります。 また、all_clear関数で保持している要素を全削除します。

BaseManagerクラス

要素管理クラスです。テンプレートクラスになっており、 保持する要素の型を与える必要があります。 要素の型はBaseElementの子クラスである必要があります。 add関数で要素を追加保持し、update関数で保持している要素全部の更新を行います。 更新によって要素が削除済みフラグを立てている場合は、その要素をすべて削除します。

使い方

Sample.cppにサンプルを用意しているので、 なんとかわかってやってください。