【问题标题】:C++ method overloading [closed]C++ 方法重载
【发布时间】:2014-12-19 00:43:44
【问题描述】:

我有一个方法,我需要重载它,但是当我尝试时,我得到了错误,上面写着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的类声明。至少这是有问题的代码!很可能您根本没有为 Order 类提供默认构造函数。
  • 缺少产生错误的行,缺少该 ctor 的假定声明,缺少其定义。我们基本上得出了与编译器相同的结论:如果您想要一个可以工作的可执行文件,请显示一些源代码。
  • 您的 Order 类没有默认构造函数,但在代码中的某处您没有向我们展示您正在执行类似 Order odr; 的操作。

标签: c++ oop overloading


【解决方案1】:

在这一行:

Order o1;

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

【讨论】:

  • 它应该是什么样子?抱歉问我有点困惑。
  • @user3476593 Order() : implOrder(...) { ... }
猜你喜欢
  • 1970-01-01
  • 2016-07-07
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多