Nạp chồng toán tử nhập xuất C++

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];
		}
	}
};

Lỗi gì thế bạn? Cái cần để giải quyết được vấn đề là chi tiết về lỗi và quá trình xảy ra lỗi.

3 Likes

em nhập được 1 cái thì bị lỗi exception. nhưng em fix được rồi ạ!

Fix được rồi thì em nên đăng cách fix lên rồi tích solution.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?