Vì vậy, đây là một phần nhỏ của một nhiệm vụ lớn tôi có, tôi chỉ không chắc chắn về cú pháp cho việc này.C++, Làm cách nào để gọi toán tử khai thác quá tải của lớp cơ sở trong lớp dẫn xuất?
Tôi có một lớp cơ sở tên Vehicle
, trong đó có các thành viên: int fuelAmt
và int fuelUsage
)
(Tôi đang sử dụng namespace std
)
Tôi quá tải các <<
điều hành theo cách này:
ostream& operator<<(ostream& osObject, const Vehicle& myVehicle)
{
cout << "Fuel Usage Rate: " << myVehicle.fuelUsage << endl
<< "Fuel Amount: " << myVehicle.fuelAmt << endl;
return osObject;
}
Tôi sau đó gọi theo cách này:
cout << Vehicle;
Kết quả là (ví dụ):
Fuel Usage Rate: 10;
Fuel Amount: 50;
Tôi cũng có một lớp Airplane
mà xuất phát từ lớp Vehicle
, nó giới thiệu một thành viên mới: int numEngines
.
Làm thế nào tôi có thể nạp chồng toán tử <<
trong lớp Airplane
, để nó đầu tiên sẽ gọi là "xe quá tải kết quả điều hành", và sau đó là kết quả của bất cứ điều gì tôi nói với các nhà điều hành <<
in từ các lớp có nguồn gốc ... Vì vậy, đây là những gì tôi muốn nói:
tôi cần nó hoạt động như thế này trong lớp 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;
}
làm thế nào để kích hoạt thực thi lớp cơ sở xuất ra giá trị của các thành viên, trong lớp có nguồn gốc này?
Có giống như thay đổi tiêu đề không? Như thế này:
ostream& operator<<(ostream& osObject, const Airplane& myAirplane): operator<<Vehicle
Trong operator << cho xe của bạn viết thư cho cout. Bạn nên viết thư cho osObject. – user763305