2026-06-29 21:18:48 +02:00

52 lines
1.5 KiB
C++

#pragma once
#include <string>
#include <iostream>
#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() << ": " <<std::endl;
instrument->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; }
};