所以我是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;
}