Mấy anh cho em hỏi cách sửa lỗi warning như ảnh ạ, và chương trình em viết chỉ có thể nhập được nhưng không thể sắp xếp hay xuất ra được
#include<iostream>
#include<string>
#include<conio.h>
using namespace std;
class MONHOC {
char tenmh[20];
int sotiet;
public:
MONHOC() {
tenmh[0]=0;
sotiet = 0;
}
void nhap() {
cout << "nhap ten mon hoc: ";
cin.ignore(); cin.getline(tenmh, 20);
cout << "\n sotiet";
cin >> sotiet;
}
void in() {
cout << "mon: " << tenmh << " " << "sotiet" << sotiet;
}
MONHOC& operator=( MONHOC& d) {
sotiet = d.sotiet;
int n = strlen(d.tenmh);
strcpy_s(tenmh, n, d.tenmh);
return d;
}
};
class GIAOVIEN : public MONHOC {
char tengv[20];
int ns;
int smh;
MONHOC* mh;
public:
GIAOVIEN() :MONHOC() {
ns = smh = 0;
tengv[0] = 0;
mh = NULL;
}
void nhap() {
cout << "nhap thong tin ten giao vien: ";
cin.ignore(); cin.getline(tengv, 20);
cout << "nam sinh va so mon day: ";
cin >> ns >> smh;
mh = new MONHOC[smh + 1];
for (int i = 1; i <= smh; i++) {
mh[i].nhap(); //Warning C6385 Reading invalid data from 'mh': the readable size is '(unsigned int)*24' bytes, but '48' bytes may be read.
}
}
void in() {
cout << "ho va ten: " << tengv << " / " << "nam sinh: " << ns << endl;
cout << "so mon day: " << smh << endl;
for (int i = 1; i <= smh; i++)
mh[i].in();
}
~GIAOVIEN() {
tengv[0]=ns = smh = 0;
delete mh;
}
int getsmh() {
return this->smh;
}
GIAOVIEN& operator=( GIAOVIEN& d) {
ns = d.ns;
int m = d.smh;
int n = strlen(tengv);
strcpy_s(tengv, n, d.tengv);
smh = m;
delete mh;
mh = new MONHOC[m + 1];
for (int i = 1; i <= m; i++) {
mh[i] = d.mh[i];
}
return d;
}
};
class BM : GIAOVIEN {
char tenbm[20];
int sogv;
GIAOVIEN* gv;
public:
BM() :GIAOVIEN() {
tenbm[0] = 0;
sogv = 0;
gv = NULL;
}
void nhap() {
cout << "nhap thong tin bo mon: " << endl;
cin.ignore(); cin.getline(tenbm, 20);
cout << " so giao vien: ";
cin>> sogv;
gv = new GIAOVIEN[sogv + 1];
for (int i = 1; i <= sogv; i++) {
gv[i].nhap();
}
}
void in() {
cout << "bo mon:" << tenbm << "----" << "so giao vien: " << sogv << endl;
for (int i = 1; i <= sogv; i++) {
gv[i].in();
}
}
~BM() {
tenbm [0]= sogv = 0;
delete gv;
}
void sapxep() {
GIAOVIEN tempt;
for (int i = 1; i < sogv; i++) {
for (int j = 2; j <= sogv; j++) {
if (gv[i].getsmh() < gv[j].getsmh()) {
tempt = gv[i];
gv[i] = gv[j];
gv[j] = tempt;
}
}
}
}
};
int main() {
BM p;
p.nhap();
p.sapxep();
p.in();
return 0;
}