-4

'Order' には、0 引数を取るコンストラクターが含まれていません。そのエラーに基づいて、私はそれが私のパブリック クラス Order にあることを知っています。私は何を見落としていますか?ありがとう!

public class Order
{
    public int QuantityOrdered { get; set; }
    public double TotalPrice;
    public const double PRICEEACH = 19.95;

    virtual public double totalPrice
    {
        set
        {
            TotalPrice = QuantityOrdered * PRICEEACH;
        }
    }
}

public class ShippedOrder : Order
{
    public const double SHIPPINGFEE = 4.00; 
    public override double totalPrice
    {
        set
        {
            totalPrice = base.TotalPrice + SHIPPINGFEE;
        }
    }
}
4

2 に答える 2

5

指定したコードにリストしていない Order クラスにコンストラクターが必要です。

クラスのコンストラクターを定義しない場合、コンパイラーによって暗黙的なパラメーターなしのコンストラクターが与えられます。

ただし、パラメーターを取るコンストラクターを追加すると、ex. public Order(string someString) {}、この暗黙のコンストラクターを失います。

あなたがする必要があるのは、次のいずれかです。

  1. 明示的なパラメーターなしのコンストラクターを追加します。public Order() {}

  2. Order オブジェクトをインスタンス化するコードを更新して、探しているパラメーターを渡します。new Order(someString)

  3. パラメーターを期待するコンストラクターを Order から削除します。

于 2012-04-17T03:04:45.693 に答える
2

このエラー メッセージを受け取る唯一の方法は、次のいずれかがある場合です。

  1. クラスで 1 つ以上の引数を取るコンストラクター。
  2. 0 個の引数を取るが、保護されているかプライベートであり、アクセスの外でコンストラクターを呼び出そうとしているコンストラクター。
于 2012-04-17T03:05:44.230 に答える