作者csihcs (非天夜翔)
看板C_and_CPP
标题Re: [问题] 物件继承之编译不过
时间Thu Nov 12 09:44:35 2009
※ 引述《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