#include <iostream> class vehicle { float nenpi;//燃費 float fuel;//燃料 public: vehicle() {/*省略*/ }; ~vehicle() {/*省略*/ }; virtual void Run() {/*省略*/ }; //走る virtual void Stop() {/*省略*/ }; //止まる virtual void Turn() {/*省略*/ }; //曲がる }; class DumpTruck : public vehicle { float loadWeight;//積載量 public: DumpTruck() {/*省略*/ }; ~DumpTruck() {/*省略*/ }; void Run() {/*省略*/ }; void Stop() {/*省略*/ }; void Turn() {/*省略*/ }; void Dump() {/*省略*/ };//ダンプカーで土を捨てる }; class Bulldozer : public vehicle { float bladeWidth;//ブレード幅 public: Bulldozer() {}; ~Bulldozer() {}; void Run() {/*省略*/ }; void Stop() {/*省略*/ }; void Turn() {/*省略*/ }; void BullDoze() {/*省略*/ }; //ブルドーザーで土を押す }; using namespace std; int main() { //ごにょごにょ return 0; }
① DumpTruckクラスのメンバ関数 Run() を以下の様に書こうと思ったら、vehcleクラスを継承しているはずなのに。エラーが出ました。 どうしてですか?
void DumpTruck::Run() { fuel -= 10; };
② 上のエラーを修正するには、どうするのがよさそうですか?(授業で習った方法で!)
①その1
mainに
DumpTruck型
BullDozer型
オブジェクトをひとつづつ作りなさい。
また、このオブジェクト=クラスの実体の事を何と呼ぶか答えなさい。
②その2
mainに、
DumpTruck型
BullDozer型
オブジェクトのオブジェクトへのポインタ変数をそれぞれ1個ずつつくり、何も指さないポインタで初期化しなさい。
③その3
②でつくったポインタ変数に対して、
DumpTruck型のクラスの実体
BullDozer型のクラスの実体
を、動的に確保してそのアドレスをポインタ変数に代入しなさい。
④その4 ②でプログラムを動かしたときは、vehcle型のデストラクタ、それを継承したクラスのデストラクタもよばれたけど、③では呼ばれませんでした。 どうしてでしょうか? どうしたら、デストラクタ呼べますか?