2014-05-07 43 views
-1

我试图解决C++中的问题,但因为我是一个begginer我不知道该怎么做! 问题是,如果你能帮我:) :):类C++测试

通过使用下面的C++代码创建关于类“汽车”&“卡车”正确的构造函数。每个功能必须将合适的参数传递给父级车辆。另外,功能汽车在创建对象时应该初始化乘客。卡车类应在创建对象时初始化装载限制。

对象与汽车()和卡车()语句将如下:

车OB(人次,轮毂,范围);

truck ob(loadlimit,wheels,range);

#include <iostream> 
using namespace std; 
    class vehicle{   
      int num_wheels;  
      int range; 
      public: 
       vehicle(int w, int r){num_wheels = w; range = r;} 
       void showv(){ 
        cout << "Wheels: " << num_wheels << endl; 
        cout << "Range: " << range << endl; 
       } 
    }; 

    class car : public vehicle { 
      int passengers; 
      public: 
       void show(){ 
        void showv();  
        cout << "Passengers: " << passengers << endl;  
       }   
    }; 

    class truck : public vehicle {   
      int loadlimit;   
      public:   
       void show(){  
        void showv();   
        cout << "Loadlimit: " << loadlimit << endl;   
       }   
    }; 

    int main(){   
     car c(5, 4, 500);   
     truck t(3000, 12, 1200);   
     cout << "Car: " << endl;   
     c.show();   
     cout << "Truck: " << endl;   
     t.show();   
     return 0;   
    } 
+0

同样的事情在哪里级“车”和“卡车”的人的其他数据成员需要初始化? – Subhajit

+0

感谢您的回答。我不知道它可能会在哪里开始,那是怎么测试..对不起。 (?) 不知道这么多来引导/帮助.. IM Cott,我试着学习与我的C知识:/ – user3610729

回答

2

CarTruck不具有采取必要参数的构造函数,并传递给基类的构造函数。他们应该是这样的:

class car : public vehicle { 

    int passengers; 

public: 

    car(int w,int r,int p): vehicle(w,r), passengers(p){} 
    void show(){ 

     void showv(); 

     cout << "Passengers: " << passengers << endl; 

    } 
}; 

class truck : public vehicle { 

     int loadlimit; 

     public: 

      truck(int r, int w, int l):vehicle(r,w),loadlimit(l){} 

      void show(){ 

       void showv(); 

       cout << "Loadlimit: " << loadlimit << endl; 

      } 

}; 
+0

@ user3610727如果这个或任何答案已经解决了您的问题,请点击复选标记,考虑 [接受它](http://meta.stackexchange.com/q/5234/179419)。 这表示您已经找到了解决方案,并向回答者和您自己提供了一些名誉。没有义务这样做。 – Rakib

+0

感谢很多家伙:) – user3610729

-1

简单的解决方案,

car::car(int w,int r,int p) 
{ 
    passengers = p; 
    vehicle::vehicle(w,r); 
} 
+0

调用'vehicle :: vehicle(w,r)'将尝试*创建一个临时的,不初始化的基础部分,但会失败,因为'车辆'没有默认的构造函数。 – Rakib

+0

@Rakibul,类本身显示了vechicle的定义(w,r) – Subhajit

+0

它应该得到'没有合适的默认构造函数错误',因为'car :: car'不传递基类构造函数参数。 – Rakib

0

基地成员初始化

Car构造:

car(int a, int b, int c) : vehicle(a,b),passengers(c){}; //initialiser list 

Truck构造:

truck(int g, int h, int j):vehicle(g,h),loadlimit(j){} 
0

你需要一个承包商添加到汽车卡车

class car : public vehicle { 

      int passengers; 
      public: 
      car(int p) : vehicle(int w, int r) // Call the superclass constructor in the subclass' 
      { 
       passengers = p; 
      } 

      void show() 
      { 
       showv();  
       cout << "Passengers: " << passengers << endl;  
      }   
     }; 

卡车