作者conan77420 (小馬非馬)
看板C_and_CPP
標題[問題] 物件繼承之編譯不過
時間Wed Nov 11 22:02:04 2009
遇到問題:編譯不成功
我在練習繼承,單單作父類別沒問題,但是繼承好像有地方寫得怪怪的,
而我不懂以下這個意思> <"
" 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