52 lines
1.5 KiB
C++
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; }
|
|
}; |