Search code examples
c++construct

C++ construct issue


I have some problems with following code:

    class Osoba { 
      std::string imie; 
      std::string nazwisko; 
      std::string pesel; 
public: 
      Osoba(const std::string & im, const std::string & na, const std::string & pe); 
      std::string get_imie() const; 
      std::string get_nazwisko() const; 
      std::string get_pesel() const; 
}; 


class Pracownik : public Osoba { 
      int liczba_godzin; 
    public: 
      Pracownik(const std::string & im, const std::string & na, const std::string & pe, int liczba_godzin); 
      Pracownik(const Osoba & o, int liczba_godzin); 
      int podaj_liczbe_godzin() const; 
}; 

I need to write a construct code. Could someone help me? I tried like this, but it does not work:

Osoba::Osoba(const std::string & im, const std::string & na, const std::string & pe):imie(im), nazwisko(na), pesel(pe){};

Pracownik::Pracownik(const std::string & im, const std::string & na, const std::string & pe, int liczba_godzin):imie(im), nazwisko(na),pesel(pe),liczba_godzin(liczba_godzin){} 
Pracownik::Pracownik(const Osoba & o, int liczba_godzin):Osoba(o), liczba_godzin(liczba_godzin){}; 

@edtit errors logs below:

 C:\Users\Admin\Desktop\projekt\main.cpp In constructor `Pracownik::Pracownik(const std::string&, const std::string&, const std::string&, int)': 

5 C:\Users\Admin\Desktop\projekt\main.cpp `std::string Osoba::imie' is private     
37 C:\Users\Admin\Desktop\projekt\main.cpp within this context     
37 C:\Users\Admin\Desktop\projekt\main.cpp class `Pracownik' does not have any field named `imie'     
6 C:\Users\Admin\Desktop\projekt\main.cpp `std::string Osoba::nazwisko' is private     
37 C:\Users\Admin\Desktop\projekt\main.cpp within this context     
37 C:\Users\Admin\Desktop\projekt\main.cpp class `Pracownik' does not have any field named `nazwisko'     
7 C:\Users\Admin\Desktop\projekt\main.cpp `std::string Osoba::pesel' is private     
37 C:\Users\Admin\Desktop\projekt\main.cpp within this context     
37 C:\Users\Admin\Desktop\projekt\main.cpp class `Pracownik' does not have any field named `pesel'     
37 C:\Users\Admin\Desktop\projekt\main.cpp no matching function for call to `Osoba::Osoba()'     
 note C:\Users\Admin\Desktop\projekt\main.cpp:4 candidates are: Osoba::Osoba(const Osoba&)     
 note C:\Users\Admin\Desktop\projekt\main.cpp:4                 Osoba::Osoba(const std::string&, const std::string&, const std::string&) 

Solution

  • Pracownik need to construct base class by calling Osoba's constructor, like this:

    Pracownik::Pracownik(const std::string & im, 
    const std::string & na,
    const std::string & pe,
    int liczba_godzin)
    : Osoba(im, na, pe)
    , liczba_godzin(liczba_godzin)
    {}