#include #include using namespace std; class Towar { private: string producent, model; public: Towar(){} Towar(string _producent, string _model) : producent(_producent), model(_model){} virtual void opis()const=0; virtual ~Towar(){} }; class Laptop : public Towar { private: string procesor; double pamiec, przekatna; public: Laptop() : Towar(), pamiec(0), przekatna(0){} Laptop(string _producent, string _model, string _procesor, double _pamiec, double _przekatna) : Towar(_producent, _model) { procesor = _procesor; pamiec = _pamiec; przekatna = _przekatna; } void opis() const override { cout << "Laptop: " << endl; } }; class Telewizor : public Towar { private: double przekatna; public: Telewizor() : Towar(), przekatna(0){} Telewizor(string _producent, string _model, double _przekatna) : Towar(_producent, _model), przekatna(_przekatna){} void opis() const override { cout << "TV: " << endl; } }; class Radio : public Towar { private: bool isCD; string format; public: Radio() : Towar(), isCD(false){} Radio(string _producent, string _model, bool _isCD, string _format) : Towar(_producent, _model), isCD(_isCD), format(_format){} void opis() const override { cout << "Radio: " << endl; } }; class Kontener { private: vector towary; public: Kontener(Towar** b, Towar** e) : towary(vector(b,e)){} Kontener& operator=(const Kontener&k) = delete; Kontener(const Kontener&) = delete; void wyswietl_opisy() const { for(unsigned i = 0; i < towary.size(); i++) { towary[i]->opis(); } } friend void wyswietl(); ~Kontener() { for(unsigned i = 0; i < towary.size(); i++) { delete towary[i]; } } }; void wyswietl(Kontener& k) { k.wyswietl_opisy(); } int main() { Towar* towary[] = {new Laptop, new Telewizor, new Radio}; Kontener k(towary, towary + 3); wyswietl(k); return 0; }