C++ 继承:调用带参数的构造函数
C++ Inheritance: Calling constructor w/ args
我正在尝试调用带有参数的父类构造函数,在我的子类的带有参数的构造函数中,但我收到编译器错误"预期主表达式之前......"。这是我所拥有的:
class Ship {
private:
string shipName;
int yearBuilt;
public:
Ship();
Ship(string name, int year);
};
class CruiseShip: public Ship {
private:
int maxPeople;
public:
CruiseShip()
: Ship() {
maxPeople = 100;
}
CruiseShip(int m)
: Ship(string name, int year) {
maxPeople = m;
}
};
Ship::Ship() {
shipName = "Generic";
yearBuilt = 1900;
}
Ship::Ship(string name, int year) {
shipName = name;
yearBuilt = year;
}
这是我遇到问题的特定代码段:
CruiseShip(int m)
: Ship(string name, int year) {
maxPeople = m;
}
我的目标是能够创建一个对象,CruiseShip c1,带有3个参数来设置名称,年份和最大人数。我一直在网上阅读,它告诉我这应该没问题,但我显然做错了什么。我将不胜感激任何意见,谢谢!
您需要像这样将参数传递给父类构造函数:
CruiseShip(int m, string name, int year): Ship(name, year), maxPeople(m) {}
更好的是,您应该在初始值设定项列表中将maxPeople
设置为 m
。
相关文章:
- C++:使用运算符 = 调用多参数构造函数
- 通过零参数构造函数创建的 glm::mat4 应该包含哪些值?
- 好奇的混合与可变参数构造函数
- 具有默认值的单个参数构造函数是否与默认构造函数相同?
- 为什么我们需要创建一个单参数构造函数来使用临时的无名称对象
- 在可变参数构造函数中初始化常量数组
- C++ 显式多参数构造函数歧义
- 零一参数构造函数
- 可变参数构造函数中的 SFINAE
- 当没有显式关键字与单参数构造函数一起使用时,编译器可以发出警告
- 可变参数类模板和可变参数构造函数
- 确保模板参数类型与其可变参数构造函数的类型匹配
- C++默认参数构造函数与内联初始化优先级
- 如何在 c++ 中将包含复制构造函数的类的参数构造函数称为私有?
- 自动存储中没有无参数构造函数的类对象和异常
- 警告:用两个参数构造函数返回对象时,表达结果未使用
- 如何在C++中调用无参数构造函数
- 在 c++ 中具有多个参数构造函数的模板类存在问题
- 可变参数构造函数优先于用户提供的移动构造函数,除非默认
- 如何从可变参数构造函数参数构造任何对象?