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