#pragma once #include #include #include "Musikinstrument.h" class Musiker { std::string const name; Musikinstrument const* instrument; public: Musiker(const std::string& n) : name(n), instrument(nullptr) { std::cout << "Konstruktor : Musiker(string name) : " << name << std::endl; } Musiker() : name("Name unbekannt"), instrument(nullptr) { std::cout << "Konstruktor : Musiker() : " << name << std::endl; } virtual ~Musiker() { std::cout << "Destruktor : ~Musiker() : " << name << std::endl; delete instrument; } void weiseInstrumentZu(Musikinstrument const* instrumentToAssign) { if(instrument != nullptr) { std::cout << "Der Musiker " << name << " hat bereits ein Instrument zugewiesen bekommen. Das alte Instrument wird durch das neue ersetzt" << std::endl; delete instrument; } instrument = instrumentToAssign; std::cout << "Der Musiker " << name << " erhält das Instrument " << instrument->liefereName() << std::endl; } void spielen() const { if(instrument != nullptr) { std::cout << name << " spielt " << instrument->liefereName() << ": " <spielen(); } else { std::cout << "Der Musiker " << name << " hat kein Instrument zugewiesen bekommen und kann daher nicht spielen." << std::endl; } } std::string liefereName() const { return name; } };