Problem bei Aufgabe!
-
Hallo, ich habe ein Problem bei einer Ausgabe.
Ich soll eine Klasse Menge schreiben, welche sich auf eine Klasse Intervall bezieht. Die beiden Klassen sind fertig, habe aber Probleme bei einigen Methoden.
Sollte dazu sagen, dass das Programm auf leichten Niveau geschreben werden soll.#include "Intervall.h" #include <iostream> using namespace std; #ifndef MENGE_H #define MENGE_H class Menge { public: Menge(); Menge(const Intervall& i); Menge(const Menge& m); ~Menge(); Menge& operator=(const Menge& m); int getAnzahl() const; bool überprüfeZahlen(double z); bool teilmengen(const Menge& m); bool obermengen(const Menge& m); Intervall& operator[](int i) const; const Menge operator+=(const Menge& m); const Menge operator*(const Menge& m); private: Intervall* elemente; int anzahl; bool leer; void sortieren(); }; ostream& operator<<(ostream&, const Menge& m); #endifProblem 1 ist ein Problem bei der Ausgabe. Habe dazu den Ausgabe Operator überladen.
ostream& operator<<(ostream& ausgabe, const Menge& m) { cout << "Menge : {" ; for (int a = 0; a < m.getAnzahl(); a++) { ausgabe << m[a]; } cout << "}"<< endl; return ausgabe; }Diese Methode soll eine Menge ausgeben, welhe wie folgt aussieht:
int main (void) { Intervall a1(2.,3.), a2(2.2, 2.4); Menge m1 [] = { Menge(a1), Menge(a2) }; cout<< m1 << endl; }Würde mich freuen, wenn mir jemand bei diesem ersten Problem hilft.
-
micky03 schrieb:
Würde mich freuen, wenn mir jemand bei diesem ersten Problem hilft.
Wenn du eines genannt hättest ...
-
Und wo ist jetzt das Problem?
BTW: Du kannst dir etwas Arbeit ersparen, wenn du in Menge statt des Zeigers und des ints std::vector<Interval> verwendest. Dann brauchst du auch keinen eigenen Kopierkonstruktor, Zuweisungsoperator und keinen eigenen Destruktor zu schreiben.
-
Das Problem ist, dass er mir nicht den Inhalt meiner Menge wiedergibt, sondern nur irgendeinen Zahlencode.
-
Menge m1[] ist ein Array. Ruf für jedes Element darin std::cout aus (Schleife).
-
Ich würde es aber gerne mit dem Überladungsoperator machen.
-
micky03 schrieb:
Ich würde es aber gerne mit dem Überladungsoperator machen.
Wo ist denn dann dein Ansatz dazu? Du weißt doch das richtige Stichwort, dann kannst du dazu auch nachschauen, wie man das für deinen Fall macht.
-
micky03 schrieb:
Ich würde es aber gerne mit dem Überladungsoperator machen.
Was mir am
operator<<()auffällt: Du schreibst sowohl nachcout, als auch in den übergebenen stream und Du gibstIntervall-Objekte aus.
Wenn die Ausgabe nicht so aussieht, wie Du Dir das vorstellst, musst Du in den Ausgabeoperator vonIntervallschauen...