Cześć forum :P Otóż mam problem z nazwijmy to rzutowaniem. Sytuacja wygląda tak:
#include <iostream>
#include <string>
using namespace std;
class Ksiazka {
public:
Ksiazka(string autor, string tytul)
{
this->autor = autor;
this->tytul = tytul;
}
virtual void opis() { cout << autor + " " + tytul << endl; }
protected:
string autor;
string tytul;
};
class StaraKsiazka : public Ksiazka
{
public:
StaraKsiazka(string autor, string tytul, int ilosckurzu) : Ksiazka(autor, tytul) {
this->ilosckurzu = ilosckurzu;
}
void opis() { cout << autor + " " + tytul + ", ilosc kurzu: " + to_string(ilosckurzu) << endl; }
private:
int ilosckurzu;
};
int main()
{
StaraKsiazka ksiazka("Ksiazka", "XXX", 23);
ksiazka.opis();
Ksiazka* ksiazki = new Ksiazka[1]{ksiazka};
ksiazki[0].opis();
}
Chodzi mi o to, że funkcja opis jest virtual, ale jednak finalnie nie zostaje nadpisana. Bo chce aby z tablicy obiektow Ksiazka po wywolaniu funkcji opis na którymś z obiektu wypisywało pełny opis jakby to był kompletny obiekt typu np. StaraKsiazka - czyli aby tez była ilosc kurzu wypisana. A tu mimo że ta książka była starą ksiązką, to drukuje opis jakby to była po prostu książka :D
Wyjście:
Ksiazka XXX, ilosc kurzu: 23
Ksiazka XXX