- 我可以分別定義基類和派生類的流插入和提取操作符嗎?
- 如果我們從基類派生類,那麼我怎樣才能投射和超載流插入和提取操作符?
我創建了一個類VehicleType
和bikeType
並想重載流插入和提取運算派生類,因爲我需要從文件中讀取數據,因爲當我從文件,類變量,這樣讀取數據時,我會失去更多時間。我的問題是,我如何將派生類bikeType
投射到vehicleType
。派生類插入和提取操作符重載以及基類到派生類之間的轉換
#pragma once
#ifndef vehicleType_H
#define vehicleType_H
#include<string>
#include"recordType.h"
using namespace std;
class vehicleType
{
private:
int ID;
string name;
string model;
double price;
string color;
float enginePower;
int speed;
recordType r1;
public:
friend ostream& operator<<(ostream&, const vehicleType&);
friend istream& operator>>(istream&, vehicleType&);
vehicleType();
vehicleType(int id,string nm, string ml, double pr, string cl, float
enP, int spd);
void setID(int id);
int getID();
void recordVehicle();
void setName(string);
string getName();
void setModel(string);
string getModel();
void setPrice(double);
double getPrice();
void setColor(string);
string getColor();
void setEnginePower(float);
float getEnginePower();
void setSpeed(int);
int getSpeed();
void print();
};
#endif
#pragma once
#ifndef bikeType_H
#define bikeType_H
#include"vehicleType.h"
#include<iostream>
using namespace std;
class bikeType :public vehicleType
{
private:
int wheels;
public:
bikeType();
bool operator<=(int);
bool operator>(bikeType&);
bool operator==(int);
bikeType(int wls, int id, string nm, string ml, double pr, string
cl,float enP, int spd);
void setData(int id, string nm, string ml, double pr, string cl,
float enP, int spd);
void setWheels(int wls);
int getWheels();
friend istream& operator>>(istream&, bikeType&);
friend ostream& operator<<(ostream&, const bikeType&);
void print();
};
#endif
我已經定義了基類和派生類的所有函數,但只有流插入和流提取操作符無法定義。
'的ostream&運算<<(ostream的&OSObject的,常量busType& 總線) { \t OSObject對象<<的static_cast(總線); \t osObject <<「\ t \ t」<< bus.seats <<「\ t \ t」<< bus.wheels << endl; \t return osObject; }'我做了,但編譯器給我錯誤「無效類型 轉換」我不明白這種類型的錯誤。 –