-4

我得到的“订单”不包含带有 0 个参数的构造函数。因此,基于该错误,我知道它在我的公共课程订单中。我在看什么?谢谢!

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 类中必须有一个构造函数。

当您没有为类定义任何构造函数时,编译器会为您提供一个隐式无参数构造函数。

但是,当您添加带有参数的构造函数时,例如。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 回答