C++ 继承:调用带参数的构造函数

C++ Inheritance: Calling constructor w/ args

本文关键字:参数 构造函数 调用 继承 C++      更新时间:2023-10-16

我正在尝试调用带有参数的父类构造函数,在我的子类的带有参数的构造函数中,但我收到编译器错误"预期主表达式之前......"。这是我所拥有的:

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