C++相談室 part91
■ このスレッドは過去ログ倉庫に格納されています
0164デフォルトの名無しさん
2011/09/25(日) 08:33:42.66class IDrinkable {};
class IEquipment : public IItem {};
class Weapon : public IEquipment {};
class Armor : public IEquipment {};
class Potion : public IItem, public IDrinkable {};
std::list<shared_ptr<IItem>> items;
コンテナにつっ込まれた要素の、元の型を知りたい時に、IItem クラスは何を用意することがベストだろうか
1. 何も用意しない。dynamic_cast を使用する
2. virtual ItemType GetType() = 0
enum ItemType {
ItemType_Weapon, // Weapon クラスはこれを返す。
ItemType_Armor, // Armor クラスはこれを返す。
...
}
3. virtual Weapon * CastToWeapon() { return NULL; }
Weapon クラスはオーバーライドして、this を返す。
他の派生したクラスへキャストする関数も用意する。
4. その他
■ このスレッドは過去ログ倉庫に格納されています