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

时间:2013-10-20 23:38:21

标签: c++ inheritance constructor

我正在尝试使用参数在我的子类的构造函数中调用我的父类的构造函数,但是我得到了一个编译器错误“在...之前预期的主表达式”。 这就是我所拥有的:

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个参数,用于设置名称,年份和年份。最大的人。 我一直在网上阅读,它告诉我这应该没问题,但我显然做错了什么。我很感激任何意见,谢谢!

1 个答案:

答案 0 :(得分:2)

您需要将参数传递给父类构造函数,如下所示:

CruiseShip(int m, string name, int year): Ship(name, year), maxPeople(m) {}

最好,您应该在初始化列表中将maxPeople设置为m