所以我是c类的新手,我正在编写这个代码来管理书籍和客户 . 我使用两个文本文件来获取书籍和客户 . 所以我使用三个类,一个用于客户端,另一个用于库,一个用于书籍,我在编译时遇到问题,问题恰恰在于用户类中的emprunte功能 . 我不知道究竟是什么问题 . 这是用过的代码:(我的主要仍然是空的,我将在稍后制作菜单)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
class livre{
private:
string numero;
string titre=" ";
string auteur;
bool disponible = true;
public:
livre(string t,string a,string n):numero(n),titre(t),auteur(a){}
void affiche(){
cout<<numero<<" : ";
if(est_disponible()){
cout<<"disponible // ";
}
else cout<<"indisponible // ";
cout<<titre<<" - "<<auteur<<endl;
}
bool est_disponible(){
return disponible;
}
void rendre_disponible(){
disponible = true;
}
void rendre_indisponible(){
disponible = false;
}
string get_numero(){
return numero;
}
};
class usager{
private:
string nom = " ";
vector<livre> emprunte;
public:
usager(string n):nom(n){}
void emprunter(Bibliotheque &biblio, int num){
livre l1 = biblio.get_livre(num);
if(l1.est_disponible()){
emprunte.push_back(l1);
biblio.catalogue[num].rendre_indisponible();
}
else{
cout<<"Le livre (numero :"<<l1.get_numero()<<") n'est pas disponible"<<endl;
}
}
string get_nom(){
return nom;
}
};
class Bibliotheque{
private:
vector<usager> client;
friend class usager::emprunter(livre &l1);
public:
vector<livre> catalogue;
Bibliotheque(string fichier_livre,string fichier_client){
load_catalogue(fichier_livre);
load_clients(fichier_client);
}
void load_clients(string fich_client){
ifstream cli(fich_client);
string ligne;
while(getline(cli,ligne)){
usager u = usager(ligne);
client.push_back(u);
}
}
void load_catalogue(string fich_catalogue){
ifstream cata(fich_catalogue);
string ligne;
string num,titre,auteur;
while(cata){
getline(cata,num);
getline(cata,titre);
getline(cata,auteur);
if(!num.empty()){
livre nouveau_livre(num,titre,auteur);
catalogue.push_back(nouveau_livre);
}
}
}
void affiche_client(){
for(auto u:client){
cout<<u.get_nom()<<endl;
}
}
void affiche_catalogue(){
for(auto l:catalogue){
l.affiche();
}
}
livre get_livre(int nm){
livre l1 = catalogue[num];
return l1;
}
};
int main(){
return 0;
}