繁体   English   中英

C ++继承:使用args调用构造函数

[英]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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM