Cho em hỏi là code này bị sai ở đâu ạ?. Ở trên vẫn sử dụng QuanLyHD::hhd bình thường nhưng đến hàm friend lại báo ‘const class Hoadon’ has no member named ‘hhd’.
#ifndef DB_h
#define DB_h
#include "list.h"
#include "hoadon.h"
#include <fstream>
using namespace std;
class QuanLyHD{
private:
List<Hoadon> hhd;
public:
QuanLyHD() {};
void addHoadon(Hoadon h){
hhd.add(h);
}
void DeleteHoadon(int vitri){
hhd.Delete(vitri);
}
int count() const{
return hhd.count();
}
Hoadon getHoadon(int vitri) const{
return hhd.get(vitri);
}
void LoadFromFile(const char * fileName){
ifstream fin(fileName);
int N;
fin>>N;
char t[100];
fin.getline(t, 100);
for(int i = 0; i<N; i++){
char mahd[15], ngay[2], thang[2], nam[4], ht[100], sdt[100], sotien[100];
fin.getline(mahd, 50);
fin.getline(ngay, 5);
fin.getline(thang, 5);
fin.getline(nam, 10);
fin.getline(ht, 50);
fin.getline(sdt, 50);
fin.getline(sotien, 50);
hhd.add(Hoadon(mahd, ngay, thang, nam, ht, sdt, sotien));
}
fin.close();
}
void SaveToFile(const char * fileName) const{
ofstream fout(fileName);
fout<<hhd.count()<<endl;
for(int i = 1; i<= hhd.count(); i++){
Hoadon h = hhd.get(i);
fout<<h.GetMahd()<<endl;
fout<<h.GetNgay()<<endl;
fout<<h.GetThang()<<endl;
fout<<h.GetNam()<<endl;
fout<<h.GetHoTen()<<endl;
fout<<h.GetSDT()<<endl;
fout<<h.GetSoTien()<<endl;
}
fout.close();
}
friend ostream & operator<<(ostream &out, const Hoadon &db){
for(int i = 1; i<= db.hhd.count(); i++)
out<<db.hhd.Get(i)<<endl;
return out;
}
};
#endif