Advertisement
Guest User

Circular Header Problem

a guest
Jan 6th, 2022
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.16 KB | None | 0 0
  1. //I really don't know how to manage the header files so this can compile fine. Database has a vector of type User, and user //should access that vector...
  2. _____________________________________________________________________________________________
  3. #pragma once
  4. #include "Utility.h"
  5. #include "User.h"
  6. #include "Course.h"
  7.  
  8. class Database
  9. {
  10.     std::vector<Course> allCourses;
  11.     std::vector<User> allUsers;
  12.  
  13.     void printUserDatabase()noexcept;
  14.     void printCourseDatabase()noexcept;
  15.     void loadUserDatabase()noexcept;
  16.     void loadCourseDatabase()noexcept;
  17. };
  18. _____________________________________________________________________________________________
  19. #pragma once
  20. #include "Utility.h"
  21. #include "Database.h"
  22. class User: public Database
  23. {
  24. public:
  25.     User()noexcept;                                                                //defaultni konstruktor
  26.     User(std::string, std::string, std::string, std::string)noexcept;              //ime, prezime, username, sifra -> type automatski
  27.     User(std::string, std::string, std::string, std::string, std::string)noexcept; //ime, prezime, username, sifra, type
  28.  
  29.     std::string classType()const noexcept; //vraca nam tip objekta
  30.     std::string getName()const noexcept;                                                  //getter za ime
  31.     std::string getPassword()const noexcept;                                              //getter za password
  32.     std::string getSurname()const noexcept;                                               //getter za prezime
  33.     std::string getUsername()const noexcept;                                              //getter za username
  34.  
  35.     virtual std::string checkType()const noexcept;                                       //vraca tip koji je sastavni dio/atribut korisnika
  36.     virtual void loginMethod()noexcept(false) {}; //virtualna metoda za login
  37.     virtual void menu()noexcept;                                                   //menu je virtualan jer svaka izvedena klasa ima svoj menu
  38.  
  39.     void addFriend(User&);                                                 // dodavanje prijatelja na osnovu username-a, gleda se samo username kod Usera
  40.     void checkRequest()noexcept;                                                   //metoda koja omogucava pregled dobijenih zahtjeva i njihovo odobravanje/odbijanje
  41.     void sendMessage() noexcept;                                                    //metoda za slanje poruka na osnovu username-a
  42.     void sendRequest() noexcept;                                                    //metoda za slanje zahtjeva na osnovu username-a
  43.     bool checkFriend(std::string) noexcept;                       //provjerava da li je korisnik sa datim username-om prijatelj
  44.     bool checkUsername(std::string username)const noexcept;
  45. protected:
  46.  
  47.     std::string myMessagePath(std::string, std::string)const noexcept; //kreiranje imena fajla za inbox izmedju dva korisnika
  48.     std::string myPath();                                //
  49.     std::string password;             //password korisnika
  50.     std::string name;                 //ime korisnika
  51.     std::string surname;              //prezime korisnika
  52.     std::string type;                 //tip korisnika
  53.     std::string username;             //username korisnika
  54.  
  55.     std::vector<Course> enrolledCourses;         //lista kurseva na koje je korisnik prijavljen ili na kojima predaje
  56.     std::vector<User> friends;        //lista prijatelja
  57.     std::vector<User> requests;       //lista zahtjeva za prijateljstvo
  58.  
  59.     void header()const noexcept;                                                         //sluzi mi samo za ljepsi ispis prilikom ispisa tabele sa korisnicima
  60.     void loadEnrolledCourses()noexcept;                                    //ucitavanje kurseva na kojim predavac predaje ili kurseva koje student pohadja
  61.     void loadFiles()noexcept;
  62.     void loadFriendsDatabase()noexcept;                                            //ucitavanje prijatelja iz fajla u vektor
  63.     void loadInbox()noexcept;                                                      //ucitavanje poruka na osnovu username-a
  64.     void printEnrolledCoursesDatabase() noexcept;                                   //ispis mojih kurseva
  65.     void printFriendsDatabase() noexcept;                                           //ispis datoteke gdje se nalazi lista prijatelja, fajl this->usernamefriends.txt
  66.     void updateUserFiles();                                        //updateovanje fajlova u slucaju promjene
  67.    
  68.     friend  std::istream& operator>>(std::istream& dat, User& a)
  69.     {
  70.         dat >> a.name >> a.surname >> a.username >> a.password >> a.type;
  71.         return dat;
  72.     }
  73.     friend  std::ostream& operator<<(std::ostream& dat, User& a)
  74.     {
  75.         dat << w_ << a.name << w_ << a.surname << w_ << a.username << w_ << a.password << w_ << a.type;
  76.         return dat;
  77.     }
  78.  
  79.     friend bool operator==(const User& a, const User& b) {
  80.         return  a.getUsername() == b.getUsername();
  81.     }
  82.     friend bool operator<(const User& a, const User& b) {
  83.         return  a.getUsername() < b.getUsername();
  84.     }
  85.     friend bool operator>(const User& a, const User& b) {
  86.         return a.getUsername() > b.getUsername();
  87.     }
  88.     friend bool operator<=(const User& a, const User& b) {
  89.         return a.getUsername() <= b.getUsername();
  90.     }
  91.     friend bool operator>=(const User& a, const User& b) {
  92.         return a.getUsername() >= b.getUsername();
  93.     }
  94.  
  95. };
  96.  
  97.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement