我在使用以下代码时遇到了一些问题:
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;
};
我需要编写构造代码。有人能帮助我吗? 我试过这样,但它不起作用:
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 错误记录如下:
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&)
答案 0 :(得分:2)
Pracownik需要通过调用Osoba的构造函数来构造基类,如下所示:
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)
{}