Dziedziczenie w c++

0

Witam, mam taki program do napisania:

Stwórz klasy:

  • Osoba z polami: imie, nazwisko, wiek, konstruktorem inicjującym
    wszystkie pola oraz metodą Wypisz.
  • Książka z polami: tytul, autor (typu Osoba), data wydania oraz
    metodą Wypisz
    Stwórz klasę Czytelnik, dziedziczącą z klasy Osoba. Dodatkowo klasa
    Czytelnik powinna posiadać pole – listę / tablicę obiektów typu
    Książka - listę książek przeczytanych przez danego czytelnika oraz
    metodę WypiszKsiążki - wypisujące tytuły książek, które czytelnik
    przeczytał.
    Stwórz 5 książek, i 3 czytelników, przypisz po 3 dowolnie wybrane
    książki, do tablic / list przeczytanych książek dla każdego
    czytelnika. Wywołaj metodę WypiszKsiążki dla każdego czytelnika.

Póki co udało mi się zrobić tyle:

using namespace std;
class Osoba {
public:
    string imie;
    string nazwisko;
    int wiek;
    void wypisz()
    {
        cout << imie << " " << nazwisko << " " << wiek << endl;
    }
};

class Ksiazka {
public:
    string tytul;
    Osoba autor;
    string data;
    void wypisz()
    {
        cout << tytul << " " << data << " ";
    }
};

class Czytelnik :public Osoba {
public:
    Ksiazka lista[];
    Ksiazka plista[];
    void wypiszKsiazki() {
        for () {
            cout << plista[i];
        }
    }
};
0

Dodam, że chodzi mi tutaj o podpunkt

listę książek przeczytanych przez danego czytelnika

Nie bardzo rozumiem jak to ma wyglądać

0

Tworzysz 5 obiektów typu Ksiazka i inicjalizujesz jej pola - autor, tytuł itp. - najlepiej posłużyć się jakimś kontenerem np. std::vector
Następnie dodajesz wybrane książki do tablicy/kontenera przechowującego przeczytane przez Czytelnika książki - do tego również proponuję użyć std::vector. Tablic statycznych lepiej nie używać, zamiast nich są lepsze rozwiązania takie jak std::vector, który łatwo i wygodnie możesz modyfikować, jak również inne kontenery z STLa w zależności od sytuacji.

Utworzyłeś dwie tablice (puste) w klasie Czytelnik, a ma być tylko jedna - jego przeczytane książki. Osobna tablica/kontener z listą dostępnych książek, które będą "czytać" czytelnicy powinna zostać utworzona w funkcji main.

0
class Czytelnik :public Osoba {
public:
    vector<Ksiazka> lista;
    void wypiszKsiazki() {
        for (int i = 0; i < lista.size(); i++)
        {
            lista[i].wypisz();
        }
    }
};
int main()
{

    Osoba o1("Jan","Brzechwa",21);
    o1.wypisz();
    Ksiazka k1("Psy","20041998","Jan","Brzechwa", 44);
    k1.wypisz();
    Ksiazka k2("Koty", "21041998", "Jana", "Brzechwaa", 45);
    Ksiazka k3("Ptaki", "22041998", "Janaa", "Brzechwaaa", 46);
    Ksiazka k4("Ryby", "23041998", "Janaaa", "Brzechwaaaa", 47);
    Ksiazka k5("Konie", "24041998", "Janaaaa", "Brzechwaaaaa", 48);
}

Zrobiłem poki co tak, ale wywala mi błędy : http://prntscr.com/nm6gjv

0

Nie masz zdefiniowanych konstruktorów, żeby w ten sposób zainicjalizować pola klas Osoba i Ksiazka. Błędy kompilacji wrzucaj bezpośrednio tutaj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0