C++方法重载

问题描述:

我有一个方法,我需要重载它,但我努力,我得到错误,说:no matching function for call to Vehicle_Renting::Order::Order()C++方法重载

下面是它的外观:

类声明:

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); 
+0

代码在哪里调用了这些函数? – 2014-12-19 00:44:45

+0

请显示'Order'的类声明。至少这是有问题的代码!很可能你根本没有为'Order'类提供的默认构造函数。 – 2014-12-19 00:46:58

+1

错过了产生错误的行,错过了该ctor的假定声明,错过了它的定义。我们基本上得出了和编译器相同的结论:如果你想要一个可用的可执行文件,请显示一些源代码。 – MSalters 2014-12-19 00:57:50

在此行中:

Order o1; 

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

+0

它应该看起来如何?对不起,问我有点困惑。 – user3476593 2014-12-19 01:05:12

+0

@ user3476593'Order():implOrder(...){...}' – 0x499602D2 2014-12-19 01:08:10

+0

非常感谢您 – user3476593 2014-12-19 01:11:30