// Kolos2017zad3.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include using namespace std; class PracownikUczelni { public: PracownikUczelni() { cout << "pracownik przyjęty" << endl; } virtual void wykonajPrace() { cout << "pracuje..." << endl; } virtual ~PracownikUczelni() { cout << "pracownik wylany" << endl; } }; class Asystent : public PracownikUczelni { public: Asystent() { } void wykonajPrace() { cout << "udaje, że pracuje" << endl; } }; class Naukowiec : public PracownikUczelni { public: Naukowiec() { } void wykonajPrace() { for (auto wyrobnik : podlegli_wyrobnicy) wyrobnik->wykonajPrace(); if (podlegli_wyrobnicy.size() == 0) throw string("Awaria..."); } deque> podlegli_wyrobnicy; }; class WladzaUczelni : public PracownikUczelni { public: WladzaUczelni() { } ~WladzaUczelni() { cout << "Jeszcze tu wrócę!" << endl; } }; int main() { { bool lokalny_zakres = true; Naukowiec wyrobnik; if (lokalny_zakres) { shared_ptr pomniejszy_wyrobnik(new Asystent()); shared_ptr dziekan(new WladzaUczelni()); shared_ptr sekretarka(new WladzaUczelni()); wyrobnik.podlegli_wyrobnicy.push_back(pomniejszy_wyrobnik); wyrobnik.podlegli_wyrobnicy.push_back(shared_ptr(new Asystent())); wyrobnik.wykonajPrace(); } try { wyrobnik.wykonajPrace(); wyrobnik.podlegli_wyrobnicy.clear(); wyrobnik.wykonajPrace(); } catch (string blad) { std::cout << blad << endl; } } }