30/09/2018, 19:09

M.N ai rãnh xem giúp mình cái này với

#include<stdio.h>
#include<conio.h>
#include"iostream"
using namespace std;
class nhanvien
{
	protected:
		char hoten[100];
		int ngay, thang, nam;
	public:
		nhanvien(void);
		~nhanvien(void);
		virtual void nhap();
		virtual void xuat();
		virtual long luong();
};
nhanvien::nhanvien(void)
{
}
nhanvien::~nhanvien(void)
{
}
void nhanvien::nhap()
{
	cout << "Ho ten:"; fflush(stdin); gets_s(hoten);
	cout << "Ngay sinh d/m/y :";
	cin >> ngay; cin.ignore(); cin >> thang; cin.ignore(); cin >> nam;
}
void nhanvien::xuat()
{
	cout << hoten << endl << "Ngay sinh: " << ngay << "/" << thang << "/" << nam << endl;
}
long nhanvien::luong()
{
	return 0;
}
class sanxuat : virtual public nhanvien
{
	private:
		long luongcoban, sosp;
	public:
		sanxuat(void);
		~sanxuat(void);
		virtual void nhap();
		virtual void xuat();
		virtual long luong();
};

sanxuat::sanxuat(void)
{
}
sanxuat::~sanxuat(void)
{
}
void sanxuat::nhap()
{
	nhanvien::nhap();
	cout << "Luong co ban:"; cin >> luongcoban;
	cout << "So san pham:"; cin >> sosp;
}
void sanxuat::xuat()
{
	nhanvien::xuat();
	cout << "Luong co ban:" << luongcoban << endl << "So san pham :" << sosp << endl;
}
long sanxuat::luong()
{
	return luongcoban + sosp * 5000;
}
class vanphong : virtual public nhanvien
{
	private:
		int songay;
	public:
		vanphong(void);
		~vanphong(void);
		virtual void nhap();
		virtual void xuat();
		virtual long luong();
};
vanphong::vanphong(void)
{
}
vanphong::~vanphong(void)
{
}
void vanphong::nhap()
{
	nhanvien::nhap();
	cout << "So ngay lam viec: "; cin >> songay;
}
void vanphong::xuat()
{
	nhanvien::xuat();
	cout << "So ngay lam viec:" << songay << endl;
}
long vanphong::luong()
{
	return songay * 100000;
}
class quanlynhanvien
{
	private:
		nhanvien **x;
		int n;
	public:
		quanlynhanvien(void);
		~quanlynhanvien(void);
		void nhap();
		void xuat();
};
quanlynhanvien::quanlynhanvien(void)
{
	n = 0;
	x = new nhanvien*[1000];
}
quanlynhanvien::~quanlynhanvien(void)
{
	delete[]x;
}
void quanlynhanvien::nhap()
{
	int k;
	for (int i = 0;; i++)
	{
		do{
			cout << "
Loai nhan vien: 
1-Van phong
2-San xuat
0-Ket thuc
";
			cin >> k;
			if (k != 1 && k != 2 && k != 0) cout << "
khong hop le!
";
		  } while (k != 1 && k != 2 && k != 0);
		if (k == 0) return;
		else if (k == 1)
				{
					n++;
					x[i] = new vanphong;
			    }
		     else
			 {
			   n++;
			   x[i] = new sanxuat;
			 }
		     x[i]->nhap();
		  }
}
void quanlynhanvien::xuat()
{
	cout << "So nhan vien = " << n << "
";
	for (int i = 0; i<n; i++)
	{
		cout << endl;
		x[i]->xuat();
		cout << "Luong = " << x[i]->luong();
		cout << endl;
	}
}
void main()
{
	quanlynhanvien x;
	x.nhap();
	x.xuat();
	system("pause");
}

Bài này mình code trong 1 file cpp thì chạy ok, nhưng khi tách ra các file header thì nó bị vấn đề này:khi ctrl+F5 nó chỉ cho mình nhập lương và tính lương, không cho nhập họ tên, ngày sinh. Mình không hiểu nó bị lỗi j trong quá trình kế thừa đa hình nữa

Bài liên quan
0