Re: [問題] 物件繼承之編譯不過

看板C_and_CPP作者 (非天夜翔)時間15年前 (2009/11/12 01:44), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《conan77420 (小馬非馬)》之銘言: : 遇到問題:編譯不成功 : 我在練習繼承,單單作父類別沒問題,但是繼承好像有地方寫得怪怪的, : 而我不懂以下這個意思> <" : " error: base `car' with only non-default constructor in class without a : constructor" class car 有下列建構子 car(int ,char*) 故 compiler 不會主動再加預設建構子 car() 而 benz 繼承了 car 且無任何建構子 compiler 主動增加預設建構子 benz() : car() {} // 此行會呼叫父類別之 car(), // 但你並未有 car() 這個建構子, // 所以將產生錯誤 因此解法目前個人想到有兩種以上, 最簡單的是手動增加 car(), 這樣其他繼承car 的子類別不會有相同的問題, 但這未必是你所需要的。 : 如果能解釋一下這句話,我會自己想辦法找出錯誤,但是現在就是不知道錯在哪 : 如果有大大願意直接幫忙挑錯那真是萬分感謝 : 簡易傷眼的程式碼如下: : #include<iostream.h> : #include <stdlib.h> : #include<string.h> : //============父類別部分========== : class car : { : public: : car(int,char*); //放入(color的編號,車子名稱) : ~car(); : int move(int); : void detail(); : private: : int color; : char name[11]; : int distance; : }; : car::car(int x, char *y) : { : color=x; : strcpy(name,y); : } : car::~car() : { : delete [] name; : } : //================================== : //============子類別================ : class benz:car : { : public: : void fire(int x); : private: : int attack; : } : class bmw:car : { : public: : void fire(int y); : void defence(); : private: : } : int main() : { : benz mycar_1(1,"benz"); //其實這邊我不確定這樣寫可不可以 : bmw mycar_2(2,"bmw"); : ======================================== : 想法:我猜錯誤好像是在繼承的地方,以至於編譯其他地方也有問題 : system("pause"); : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.74.9.2
文章代碼(AID): #1A-sY623 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1A-sY623 (C_and_CPP)