C++方法重载

C++ method overloading

本文关键字:重载 方法 C++      更新时间:2023-10-16

我有一个方法,我需要重载它,但是当我尝试时,我得到错误,说no matching function for call to Vehicle_Renting::Order::Order()

下面是它的外观:

类声明:

class Order
{
    private:
    class ImplementationOrder;
    ImplementationOrder* implOrder;

内部类:

class Order::ImplementationOrder
{
private:
    string date;
    int price, id;
    friend class Order;
    bool isVerified;
    vector<Vehicle> orderedVehicles;
    Customer* customer;
    friend class Order;
};

构造 函数:

Order::Order(int price)
        :implOrder(new ImplementationOrder())
    {
        #ifdef DEBUG
            clog << DEBUG_PREFIX "Constructor (1 arg) called!" << endl;
        #endif // DEBUG
        setDate();
        setPrice(price);
        assert(price >= 0);
    }
    // copy constructor---------------------------------------------------------
    Order::Order(const Order &other)
      : implOrder(new ImplementationOrder(*(other.implOrder)))
    {
    }

方法:

void addOrder(const Order& o, const Client& c);
void addOrder(const Client& c);
void Auto_Rent::addOrder(const Order& o, const Customer& c)
{
    addCustomer(c);
    int pos = getCustomerPosition(c);
    Order o1(o);
    o1.setCustomer(implAuto_Rent->customers[pos]);
    implAuto_Rent->orders.push_back(o1);
}
void Auto_Rent::addOrder(const Customer& c)
{
    addCustomer(c);
    int pos = getCustomerPosition(c);
    Order o1;
    o1.setCustomer(implAuto_Rent->customers[pos]);
    implAuto_Rent->orders.push_back(o1);
}

我创建名为客户的对象:

Customer c5("Agriosas", "Lasiokas", 1994), c6("Edves", "Lasas", 1992), c7("MAtkes", "brolis", 1991);

我调用addOrder函数:

  s.addOrder(c5);
  s.addOrder(c7);
  s.addOrder(c6);

在这一行:

Order o1;

你需要默认构造函数来构造这个Order对象,请在你的类中添加一个做正确事情的构造函数。