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