帮我看看我的代码有什么问题:#include<iostream> #include<string> using namespace std; class Vehicle { protected: string no; //编号 public: Vehicle(string no) { this->no = no; } virtual void display() = 0; //应收费用 }; class Car :public Vehicle { public: int num; float weight; Car(string no, int num, float weight) :Vehicle(no) { this->num = num; this->weight = weight; } void display() { cout << no << " " << num * 8 + weight + 2 << endl; } }; class Bus:public Vehicle { public: int num; Bus(string no, int num) :Vehicle(no) { this->num = num; } void display() { cout << no << " " << num*30 << endl; } }; class Truck :public Vehicle { public: float weight; Truck(string no, int weight) :Vehicle(no) { this->weight = weight; } void display() { cout << no << " " << weight* 5 << endl; } }; int main() { int t; cin >> t; int type; string no; while (t--) { if (type == 1){ Car car; Vehicle* pv = &car; } else if (type == 2) { Truck truck; Vehicle* pv = &truck; } else if (type == 3) { Bus bus; Vehicle* pv = &bus; } pv.display(); } return 0; }
时间: 2023-11-27 19:53:18 浏览: 112
你的代码存在几个问题:
1. 在主函数里,你没有读取每个车辆的类型和编号。你需要添加以下代码:
```
cin >> type >> no;
```
在读取完车辆类型和编号后,你需要判断车辆类型,然后创建相应的对象,并将指针指向该对象。
2. 在创建车辆对象时,你需要传入相应的参数。例如,对于Car,你需要传入num和weight。
3. 在创建车辆对象时,你需要使用new运算符。例如,对于Car,你需要使用以下代码:
```
Vehicle* pv = new Car(no, num, weight);
```
4. 在主函数里,你需要调用display函数来输出每个车辆的应收费用。你需要将指针解引用后再调用display函数。例如,对于Car,你需要使用以下代码:
```
pv->display();
```
修改后的代码如下所示:
阅读全文