C++メソッドのオーバーロードに関する質問
私は1つの親クラスの呼び出し車両を持っています
私は 2 つの子クラス call 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 が vehicleType に基づいて子クラスから適切な機能を選択するようにするにはどうすればよいですか?
私はこのようなものを試しました..
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; }
ありがとう。!