2

エラーは次のとおりです。

FirstPattern.Character.Character' には、0 引数を取るコンストラクターが含まれていません

コードは次のとおりです。

public interface WeaponBehavior
{
    void UseWeapon();
}

class SwordBehavior : WeaponBehavior
{
    public void UseWeapon()
    {
        Console.WriteLine("A sword as plain as your wife.");
    }
}

次に、文字クラスがあります。

public abstract class Character
{
    WeaponBehavior weapon;

    public Character(WeaponBehavior wb)
    {
        weapon = wb;
    }

    public void SetWeapon(WeaponBehavior wb)
    {
        weapon = wb;
    }

    public abstract void Fight();
}



public class Queen : Character
{        
    public Queen(WeaponBehavior wb)
    {
        SetWeapon(wb);
    }

    public override void Fight()
    {

    }
}

文字クラスとサブクラスで何をすべきかわかりません。正しい方向に私を微調整できますか?

4

1 に答える 1

1

からQueen派生し、パラメーターを持つコンストラクターのみを持っているため、コンストラクターCharacterで基本コンストラクターを明示的に呼び出す必要があります。つまり、そこにあった呼び出しも不要です。CharacterWeaponBehaviorQueenSetWeapon

public Queen(WeaponBehavior wb) : base(wb)
{
}

または、デフォルトのコンストラクターを提供してCharacter、元のコードを変更しないでおくこともできます。

public abstract class Character
{
   WeaponBehavior weapon;

   public Character() { }
   ...
于 2011-02-03T03:21:00.920 に答える