Debuggen, es fehlen noch das der richtige Musikinstrument Konstruktor aufgerufen wird wenn ein Musikinstrument aufgefrufen wird benutzt wird

This commit is contained in:
Tobias Kachel 2026-06-05 09:07:09 +02:00
parent 28bf74d2a8
commit 5c0724bea0
18 changed files with 39 additions and 16 deletions

View File

@ -3,4 +3,4 @@
using namespace std; using namespace std;
Klavier::Klavier() { cout << "Konstruktor: Klavier()" << endl; } Klavier::Klavier() { cout << "Konstruktor: Klavier()" << endl; }
Klavier::~Klavier() { cout << "Destruktor: ~Klavier()" << endl; } Klavier::~Klavier() { cout << "Destruktor: ~Klavier()" << endl; }
void Klavier::spielen() { cout << "Klavier klimpert" << endl; } void Klavier::spielen() const { cout << "Klavier klimpert" << endl; }

View File

@ -4,5 +4,5 @@ class Klavier : public Musikinstrument {
public: public:
Klavier(); Klavier();
virtual ~Klavier(); virtual ~Klavier();
virtual void spielen(); virtual void spielen() const;
}; };

View File

@ -9,12 +9,15 @@ Musiker::Musiker(string name) {
this->name = name; this->name = name;
cout << "Konstruktor: Musiker(string name): " << name << endl; cout << "Konstruktor: Musiker(string name): " << name << endl;
} }
Musiker::~Musiker() { cout << "Destruktor: ~Musiker()" << endl; } Musiker::~Musiker() {
cout << "Destruktor: ~Musiker()" << endl;
delete this->instrument;
}
string Musiker::liefereName() { return name; } string Musiker::liefereName() { return name; }
void Musiker::spielen() const { void Musiker::spielen() const {
cout << name << " spielt " << instrument->liefereName() << endl; cout << name << " spielt " << instrument->liefereName() << endl;
this->instrument->spielen();
} }
void Musiker::weiseInstrumentZu(Musikinstrument const *instrument) { void Musiker::weiseInstrumentZu(Musikinstrument const *instrument) {
// Musikinstrument *musikinstrument = new Musikinstrument(*instrument); this->instrument = instrument;
this->instrument = new Musikinstrument(*instrument);
} }

View File

@ -12,7 +12,7 @@ Musikinstrument::Musikinstrument(string name) {
Musikinstrument::~Musikinstrument() { Musikinstrument::~Musikinstrument() {
cout << "Destruktor: Irgentein Musikinstrument" << endl; cout << "Destruktor: Irgentein Musikinstrument" << endl;
} }
void Musikinstrument::spielen() { void Musikinstrument::spielen() const {
cout << "Irgentein Musikinstrument erklingt irgentwie" << endl; cout << "Irgentein Musikinstrument erklingt irgentwie" << endl;
} }
string Musikinstrument::liefereName() const{ return name; } string Musikinstrument::liefereName() const { return this->name; }

View File

@ -9,6 +9,6 @@ public:
Musikinstrument(); Musikinstrument();
Musikinstrument(std::string name); Musikinstrument(std::string name);
virtual ~Musikinstrument(); virtual ~Musikinstrument();
virtual void spielen(); virtual void spielen() const;
std::string liefereName() const; std::string liefereName() const;
}; };

View File

@ -5,15 +5,14 @@ using namespace std;
Orchester::Orchester() { cout << "Konstruktor: Orchester()" << endl; } Orchester::Orchester() { cout << "Konstruktor: Orchester()" << endl; }
Orchester::~Orchester() { Orchester::~Orchester() {
cout << "Destruktor: ~Orchester()" << endl;
for (int i = 0; i < musiker.size(); i++) { for (int i = 0; i < musiker.size(); i++) {
delete musiker[i]; delete musiker[i];
} }
cout << "Destruktor: ~Orchester()" << endl;
} }
void Orchester::hinzufuegen(Musiker const *musiker) { void Orchester::hinzufuegen(Musiker const *musiker) {
//Musiker* neuerMusiker = new Musiker(*musiker); Orchester::musiker.push_back(musiker);
Orchester::musiker.push_back(new Musiker(*musiker));
} }
void Orchester::spielen() { void Orchester::spielen() {
for (int i = 0; i < musiker.size(); ++i) { for (int i = 0; i < musiker.size(); ++i) {

View File

@ -1,6 +1,9 @@
#include "Trompete.h" #include "Trompete.h"
#include "Musikinstrument.h"
#include <iostream> #include <iostream>
using namespace std; using namespace std;
Trompete::Trompete() { cout << "Konstruktor: Trompete()" << endl; } Trompete::Trompete() {
Musikinstrument("Trompete");
cout << "Konstruktor: Trompete()" << endl; }
Trompete::~Trompete() { cout << "Destruktor: ~Trompete()" << endl; } Trompete::~Trompete() { cout << "Destruktor: ~Trompete()" << endl; }
void Trompete::spielen() { cout << "Trompete trötet" << endl; } void Trompete::spielen() const { cout << "Trompete trötet" << endl; }

View File

@ -5,5 +5,5 @@ class Trompete : public Musikinstrument {
public: public:
Trompete(); Trompete();
virtual ~Trompete(); virtual ~Trompete();
virtual void spielen() override; virtual void spielen() const override;
}; };

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -27,7 +27,12 @@ int main() {
Musiker *MusikinstrumentMusikerPtr = new Musiker(nameMusikinstrument); Musiker *MusikinstrumentMusikerPtr = new Musiker(nameMusikinstrument);
Musikinstrument *musikinstrumentPtr = new Musikinstrument; Musikinstrument *musikinstrumentPtr = new Musikinstrument;
MusikinstrumentMusikerPtr->weiseInstrumentZu(musikinstrumentPtr); MusikinstrumentMusikerPtr->weiseInstrumentZu(musikinstrumentPtr);
std::cout << "+++ Musikinstrument Musiker erfolgreich addiert +++" << std::endl; std::cout << "+++ Musikinstrument Musiker erfolgreich addiert +++"
<< std::endl;
Musikinstrument *musikinstrument4 = new Musikinstrument();
Musikinstrument *musikinstrument5 = new Klavier();
Musikinstrument *musikinstrument6 = new Trompete();
delete orchesterPtr; delete orchesterPtr;
delete trompeteMusikerPtr; delete trompeteMusikerPtr;
@ -36,5 +41,6 @@ int main() {
delete klavierPtr; delete klavierPtr;
delete MusikinstrumentMusikerPtr; delete MusikinstrumentMusikerPtr;
delete musikinstrumentPtr; delete musikinstrumentPtr;
std::cout << "Lösche instrument4" << std::endl;
return 0; return 0;
} }

12
7_Musiker/code/test2.cpp Normal file
View File

@ -0,0 +1,12 @@
#include "Klavier.h"
#include "Musiker.h"
#include "Musikinstrument.h"
#include "Orchester.h"
#include "Trompete.h"
#include <iostream>
#include <ostream>
#include <string>
int main() {