C++方法重载
C++ method overloading
我有一个方法,我需要重载它,但是当我尝试时,我得到错误,说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
对象,请在你的类中添加一个做正确事情的构造函数。
相关文章:
- 重载方法的方式会在使用临时调用时生成编译器错误
- 使用模板参数重载C++方法:如何使其适用于模板的子类?
- 从纯虚拟类 (A) 派生的指针无法访问来自纯类 (B) 的重载方法
- 一种优雅或至少可行的方法,用于使用和接受具有重载方法和运算符的不同大小的文字数组常量
- 使用 nullptr 调用重载方法是不明确的
- 具有重载方法的可变参数数据结构
- C++11 重载方法,并转发到唯一方法
- 获取特定的模板重载方法指针
- std::result_of 应用于 const 重载方法
- 重载方法的类接受模板和基类 - 如何默认某个方法
- 推导模板类重载方法的地址会导致"error: expected primary-expression before ‘decltype’"
- C++如何使用按值传递和按引用传递的重载方法
- 具有原始方法参数派生类的 C++ 重载方法参数
- SWIG:在派生类中处理基类重载方法
- 在c++中的赋值运算符重载方法中删除旧的动态分配内存
- C++选择'wrong'默认参数的重载方法
- 重写重载方法会隐藏一些重载
- 在C++中,如何从父类变量的子类调用重载方法
- 所有重载方法的别名
- 使用 SWIG 在重载C++方法中设置类型