Wie erzeuge ich am besten die Objekte?
-
Hallo,
das dürfte eine ziemliche Anfängerfrage sein, aber ich wüsste gerne wie man generell in so einem Fall am saubersten verfährt, damit ich es nicht in 100 Fällen verwurste. Folgende Situation:
Ich möchte einen Spielplan erstellen. Ich kopier mal etwas Code rein:
class Spielplan { protected: Vereinsfeld teilnehmerfeld; vector<Spieltag> spieltage; public: // Konstruktoren Spielplan(); // Erstellt einen Spielplan mit dem übergebenen Teilnehmerfeld. Die // Reihenfolge des Teilnehmerfeldes entscheidet über die // Ansezungen. Spielplan(Vereinsfeld _teilnehmerfeld); // Destruktor ~Spielplan(); };
Spielplan::Spielplan(Vereinsfeld _teilnehmerfeld) { teilnehmerfeld = _teilnehmerfeld; const int ANZAHL_VEREINE = teilnehmerfeld.size(); const int ANZAHL_SPIELTAGE_HALBSERIE = ANZAHL_VEREINE - 1; // Für jeden Spieltag der Halbserie for(int s = 0;s <= ANZAHL_SPIELTAGE_HALBSERIE-1 ;s++) { cout << "Erzeugung von Spieltag " << s << endl; // Hier soll für alle Spieltage s ein Paarungsfeld angehängt werden. // Ein Paarungsfeld ist praktisch ein vector<Paarung>. // // Konstruktor für Paarung ist: // Paarung(const Verein& _heim, const Verein& _gast); // // for(int i = 0; i<= (ANZAHL_VEREINE / 2) -1; i++) { // Für den jeweiligen Spieltag s ein neu anzulegendes // Paarungslisten-Objekt erstellen mit neu anzulegenden Paarungen, // die Objekte aus dem Teilnehmerfeld übergeben kriegen. // // Ein Spieltag hat ein Attribut begegnungen vom Typ Paarungsfeld. // } // // Wie ich den Spielplan algorithmisch erstelle ist nicht das // Problem, sondern nur auf welche Weise ich die Objekte erzeuge } }
Tja, die Frage ergibt sich ja schon aus dem Kommentar. Wie erzeuge ich die entsprechenden Objekte, so dass sie so lange gültig sind wie der entsprechende Spielplan?
Muss ich dazu "new" benutzen? Das würde ich gerne so weit es geht vermeiden. Wie löst man normalerweise so einen Fall?
Vielen Dank schonmal.
Tim
-
Hier stand: QUARK
-
spieltage ist doch kein Vector von Spieltag-Zeigern, also brauchst
du auch kein new.
Einfach Paarung auf dem Stack erzeugen und mit append an den Vector
übergeben. Dann wird das Object in den Vector kopiert und räumt sich
selber wieder auf.Jockel
-
std::vector<Paarung> paarungen; paarungen.push_back(Paarung(heim, gast));
-
Ach ja, push_back heisst das bei std::vector.
Noch ein Tipp:Paarung-Variable vor der Schleife anlegen und in der Schleife
nur die Werte setzen.Jockel
-
Vielen Dank. Stimmt ja, die Dinger werden dann ja reinkopiert. Hab ich gar nicht dran gedacht. Ich werd das so mal ausprobieren.
-
Hallo Tim99. Ich habe ein riesiges Problem. Ich soll fürs Studium auch so einen Spielplan programmieren. Ich selber habe leider keine Ahnung wie ich das anstelen soll. Meine Frage wäre ob du mir vielleicht mal dein Programm zur Verfügung stellen könntest damit ich mal einen Plan habe wie dies ungefähr aussehen soll?
Du wärst wahrscheinlich meine letzte Rettung.
Grüße Ralf
-
Okay, ich hab hier zwar auch geantwortet, aber ob Tim99 seinen
2 Jahre alten Thread in der nächsten Zeit nochmal liest, ist zumindest fraglich...Jockel