アイテムと在庫/装備システムを構築するだけです。どこから始まるか分かりません
これを行うための私の解決策は、より具体的な値とそれらに関連付けられた機能を持つMeleeWeapon、RangedWeaponなどのサブクラスをベースアイテムクラスにすることです。
私の問題はここにある:
unsigned int Player::equipItem(Item item)
{
//first, we equip the item
switch (item.subClass) {
case SC::MELEE_WEAPON :
if (item.isOneHanded) {
//unequip mainhand (returns 2! so we can see if something was already there, equip mainhand slot.
//blabla
return 1; // yay!
}
break;
case SC::RANGED_WEAPON :
break;
case SC::SHIELD :
break;
case SC::ARMOR :
break;
}
return 0; //somethings fucked up.
}
ので、エラーが6行目で、アイテムがisOneHanded持っていないので、それはだが、MeleeWeaponはありません。これは実行時に99.9999%の安全性がありますが、コンパイラーはわかりません。私はあなたが動的にそれを手動でMeleeWeaponにキャストすることができるどこかを見ました。そして私はそれを再生し、さらに混乱しているエラーを繰り返しました。
SC :: ...は、アイテムのサブクラスを識別するために使用しているものです。できるだけ単純
、可能な限り説明:私が探しているソリューションの種類については
。私はペーストをコピーしないことを学びたい!ありがとうございました!
最初にキャストダウンしてから、サブクラスフィールドにアクセスする必要があります。現在、どのクラスに適合しているかをテストしています。キャストしません。 –
*手動でMeleeWeaponに動的にキャストできる場所がありましたが、それを使って遊んだり、もっと混乱しているエラーを繰り返したりしていました。何を試してみましたか? – Ryan
'Item'を使用することを知っていれば、アイテムに' isOneHanded'がないのはなぜですか?実際、はるかに優れた設計は、 'subClass'メンバを使って、何かが何かであると言って、スイッチをオンにすることではありません。 Itemに仮想 'equip'メソッドを持たず、実際のアイテムタイプに応じて必要なものを返すのはなぜでしょうか? – doctorlove