08/10/30 17:19:42
基本的なことだけど、新しいオブジェクトを、CObject派生クラスで作成
し、DECLARE_DYNAMIC()/IMPLEMENT_DYNAMIC()マクロ等を定義しておくと、
#include <afxtempl.h>
typedef CTypedPtrArray <CPtrArray, CItem *> CItemPtrArray;
CItemPtrArray items;
items.Add(new CCharactor);
items.Add(new CBuilding);
items.Add(new CWeapon);
for(int n=0;n<items.GetSize();n++)
{
CItem *pItem;
pItem=items.GetAt(n);
if(pItem->IsKindOf(CCharactor))
{
// CCharactor(派生)オブジェクトに対してのみ行う処理
}
if(pItem->IsKindOf(CBuildingItem))
{
// CBuilding(派生)オブジェクトに対してのみ行う処理
}
}
てなことが簡単にできる。 キャラクタと武器とか、オブジェクト間の
所有(依存)関係を保持するメンバ変数も追加した方がいいのでは?
Windowsプラットフォーム以外へ移植する必要性がなく、VC++使うなら、
積極的にMFCやATLを使った方がいいと思う。