Em có vấn đề nạp chồng toán tử nhập, xuất trong code. Khi nhập được 1 đối tượng thì bị lỗi. Không biết mình có bị sai lỗi nhập chồng không? Mọi người cho em biết bị sai lỗi nào ạ!
class SinhVien {
protected:
int maso;
string hoten;
string he;
float LTC;
public:
SinhVien() {
}
~SinhVien() {
}
virtual void Nhap() {
cout << "Nhap ma so sinh vien: "; cin >> maso;
cin.ignore();
cout << "\nNhap ho va ten: "; getline(cin, hoten);
cout << "\nNhap he dao tao: "; getline(cin, he);
cout << "\nNhap diem lap trinh C: "; cin >> LTC;
}
virtual void Xuat() {
cout << "\nMSSV: " << maso;
cout << "\nHo va ten: " << hoten;
cout << "\nHe dao tao: " << he;
cout << "\nDiem lap trinh C: " << LTC;
}
friend istream& operator >> (istream& is, SinhVien& sv1) {
sv1.Nhap();
return is;
}
friend ostream& operator << (ostream& os, SinhVien& sv1) {
sv1.Xuat();
return os;
}
class SinhVienChinhQuy :public SinhVien {
private:
float NMKT;
public:
void Nhap() {
SinhVien::Nhap();
cout << "\nNhap diem nhap mon ky thuat: "; cin >> NMKT;
}
void Xuat() {
SinhVien::Xuat();
cout << "\nDiem nhap mon ky thuat: " << NMKT;
cout << "\nDiem trung binh: " << DiemTrungBinh();
cout << "\n\n";
}
float DiemTrungBinh() {
return ((3 * LTC) + (2 * NMKT)) / 5;
}
};
class SinhVienChatLuongCao :public SinhVien {
private:
float DTCB;
public:
void Nhap() {
SinhVien::Nhap();
cout << "\nNhap diem dien tu can ban: "; cin >> DTCB;
}
void Xuat() {
SinhVien::Xuat();
cout << "\nDiem dien tu can ban: " << DTCB;
cout << "\nDiem trung binh: " << DiemTrungBinh();
cout << "\n\n";
}
float DiemTrungBinh() {
return ((2 * LTC) + DTCB) / 3;
}
};
class Menu {
private:
vector <SinhVien*> SV;
public:
~Menu() {
}
void Nhap() {
int n;
cout << "\nNhap tong so sinh vien: "; cin >> n;
SV.resize(n);
cout << "\nSinh vien chinh quy (1), Sinh vien chat luong cao (2): ";
int k; cin >> k;
SinhVien* sv;
if (k == 1)
sv = new SinhVienChinhQuy;
else
sv = new SinhVienChatLuongCao;
for (int i = 0; i < SV.size(); i++) {
cin >> sv[i];
}
}
void Xuat() {
cout << "\nDanh sach sinh vien: ";
for (int i = 0; i < SV.size(); i++) {
cout << SV[i];
}
}
};