【发布时间】:2012-10-26 08:15:35
【问题描述】:
C++方法重载问题
我有 1 个父类调用 Vehicle
我有 2 个子类叫 Motorcycle 和 Car
我有这个值调用 getNoOfWheels();
父类得到了那个方法,摩托车和汽车也得到了。
假设我提示用户输入
string vehicleType;
cout << "What is your vehicle type" << endl;
cin >> vehicleType;
根据用户输入,我如何让程序根据 vehicleType 选择正确的函数,我知道如果 VehicleType== 可以使用,但这违背了重载的目的。
之前有人建议使用虚拟方法。这种情况下
virtual int noOfVerticles() const { return 0; }
对于 shape.h
我对汽车和摩托车有相同的功能,但是我如何让 noOfVerticles 从基于车辆类型的子类中选择正确的功能
我试过这样的东西..
Vehicle cVehicle;
Car &rCar = &cVehicle;
if(inVehicle=="Car")
{
cout << rCar.noOfWheels() << endl;
}
我得到一个错误说..
invalid initizliation of non-const refenrece of type "Car&" from an rvaleu of type Vehicle*
和...
这是我在 Car.cpp 的虚拟功能
public:
virtual int noOfWheels() const { return 4; }
谢谢!
【问题讨论】:
-
这看起来像是一道作业题。在这种情况下,请添加标签作业。另外,请先向我们展示您的尝试,然后提出具体问题。
-
@sahaj 作业标签是obsolete
-
我建议阅读有关多态性的内容。这个怎么样:cs.bu.edu/teaching/cpp/polymorphism/intro
-
@user1600289 如果你有一个指向车辆的指针并且你有代码
pVehicle->noOfWheels(),那么正确的虚函数将被自动选择,这就是虚函数的工作原理。如果这对您不起作用,那么您做错了,我们需要查看您的所有代码。
标签: c++