簡體   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