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);
在此行中:
Order o1;
你需要默认的构造函数来构造这个Order
对象,请添加一个到你的班级,做正确的事情。
它应该看起来如何?对不起,问我有点困惑。 – user3476593 2014-12-19 01:05:12
@ user3476593'Order():implOrder(...){...}' – 0x499602D2 2014-12-19 01:08:10
非常感谢您 – user3476593 2014-12-19 01:11:30
代码在哪里调用了这些函数? – 2014-12-19 00:44:45
请显示'Order'的类声明。至少这是有问题的代码!很可能你根本没有为'Order'类提供的默认构造函数。 – 2014-12-19 00:46:58
错过了产生错误的行,错过了该ctor的假定声明,错过了它的定义。我们基本上得出了和编译器相同的结论:如果你想要一个可用的可执行文件,请显示一些源代码。 – MSalters 2014-12-19 00:57:50