Jest to niewielka część dużego zadania, które mam, ale nie jestem pewien składni tego.C++, Jak mogę wywołać przeciążony operator wyodrębniania klas klasy pochodnej?
Mam klasy bazowej o nazwie Vehicle
, który ma tych członków: int fuelAmt
i int fuelUsage
)
(używam nazw std
)
I przeciążone <<
operatora w ten sposób:
ostream& operator<<(ostream& osObject, const Vehicle& myVehicle)
{
cout << "Fuel Usage Rate: " << myVehicle.fuelUsage << endl
<< "Fuel Amount: " << myVehicle.fuelAmt << endl;
return osObject;
}
Następnie nazywam to w ten sposób:
cout << Vehicle;
Powoduje to (przykład):
Fuel Usage Rate: 10;
Fuel Amount: 50;
również posiadać klasę Airplane
pochodzący z klasy Vehicle
, wprowadza się nowy element: int numEngines
.
Jak mogę przeciążać operatora <<
w klasie Airplane
, tak, że będzie to pierwszy nazywają „pojazd przeciążony wyników Operator”, a następnie wyniki cokolwiek powiedzieć operatorowi <<
drukowanie z klasy pochodnej ... tak więc, oto co mam na myśli:
muszę to funkcjonować tak w klasie Airplane
:
ostream& operator<<(ostream& osObject, const Airplane& myAirplane)
{
//First print the Fuel Usage rate and Fuel amount by calling
//the Base class overloaded << function
//then
cout << "Number of Engines: " << myAirplane.numEngines << endl;
return osObject;
}
Jak mogę wyzwolić wykonanie klasy bazowej reprodukcji wartości swoich członków, w tym klasy pochodnej?
Czy zmienia się nagłówek? Tak:
ostream& operator<<(ostream& osObject, const Airplane& myAirplane): operator<<Vehicle
W operatora << dla pojazdów piszesz cout. Powinieneś napisać do osObject. – user763305