看板 C_and_CPP 關於我們 聯絡資訊
遇到問題:編譯不成功 我在練習繼承,單單作父類別沒問題,但是繼承好像有地方寫得怪怪的, 而我不懂以下這個意思> <" " error: base `car' with only non-default constructor in class without a constructor" 如果能解釋一下這句話,我會自己想辦法找出錯誤,但是現在就是不知道錯在哪 如果有大大願意直接幫忙挑錯那真是萬分感謝 簡易傷眼的程式碼如下: #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: 61.229.128.42
nowar100:你的benz bmw都沒有建構子嗎 XD 11/11 22:06
conan77420:可是沒有建構子不是也可以 0.0 11/11 22:10
conan77420:建構子是一個方便初值化的工具,所以應該可以沒有?@_@ 11/11 22:11
james732:建構子當然可以沒有 不過不能不寫還想要用它囉 11/11 22:12
james732:benz mycar_1(1,"benz"); 這行就會用到建構子了 11/11 22:12
conan77420:那邊我原先是猜他找不到會去父類別找,所以不會囉? 11/11 22:14
nowar100:你要從子類別建構子中 丟給父類別建構子去處理 11/11 22:16
conan77420:我加了benz(int x, char *y):car(x,y){} 還是有問題耶 11/11 23:01
conan77420:這次是main裡面無法得知benz跟bmw的型態為何物 11/11 23:06
snowlike:錯誤訊息car::car()不存在,樓樓上新增後應該會沒問題.. 11/12 00:33
snowlike:不是沒有建構也可DefaultCtor會偷加,若有做overload則否 11/12 00:36
ttnwosay:benz bmw 類別宣告結尾未加分號 ; ? 11/12 12:23
conan77420:樓上答對了,好厲害!!!謝謝各位幫忙 11/12 18:40