【发布时间】:2022-01-26 02:45:06
【问题描述】:
我的构造函数有问题。我有类车辆,然后我创建了类motorVehicle,它在vehicle 之后继承,然后我想创建类motorcycle,它在motorVehicle 之后继承,我无法创建我的默认构造函数,因为我有错误:
vehicle 和 motorVehicle 类没有被我更改,motorcycle 类在 2 个选项中,这些选项都不起作用,但我给你两个选项。顺便说一句,问题是(第一个选项):没有匹配的构造函数用于初始化“motorVehicle”并且需要第二个选项;在表达式和预期的成员名称之后或;在声明说明符之后
class vehicle {
public:
int numberOfWheels;
string color;
float vehiclePayload;
vehicle(): numberOfWheels{4},color{"black"},vehiclePayload{500}{
}
};
class motorVehicle : public vehicle {
public:
float tankCapacity;
float fuelConsumption;
float mileage;
float currentAmountOfFuel;
int yearOfProduction;
unsigned long long int vin;
motorVehicle(): tankCapacity{30}, fuelConsumption{6}, mileage{100}, currentAmountOfFuel{10}, yearOfProduction{2021}, vin{1}, vehicle{4, "black", 500} {
}
};
class motorcycle : public motorVehicle{
public:
float bootSize;
string brand;
string model;
motorcycle(): bootSize{500}, brand{"Ninja"}, model{"Kawasaki"}, motorVehicle{30,6,100,10,2021,1,vehicle{4, "black", 500}}{
}
};
class motorcycle : public motorVehicle{
public:
float bootSize;
string brand;
string model;
motorcycle(): bootSize{500}, brand{"Ninja"}, model{"Kawasaki"}, motorVehicle(){30,6,100,10,2021,1,vehicle{4, "black", 500}}{
}
};
【问题讨论】:
-
首先,您的任何构造函数中都没有任何参数,因此 c++ 编译器将找不到匹配的构造函数。然后,如果你从一个类 (B) 继承,你只能使用它的构造函数,如果有你想传递给它的父类 (A) 的参数,你应该在构造函数中这样做: B(int foo): A(富)
-
你的基类只有默认构造函数,也就是说,你不能直接通过成员构造函数构造值。您需要在构造函数的主体中发送,或者使用基类隐式创建的复制构造函数。另一种方法是给他们合适的构造函数。顺便说一句:
public成员变量通常表明该类不是抽象。当然,对于所有成员变量都有 getter/setter 成员函数的类也是如此。
标签: c++ object constructor default-constructor