【发布时间】: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