Objektenamen waehrend des Programms vergeben
-
Hallo zusammen.
Ich habe da ein Problem. Vielleicht steh ich auch nur tierisch auf dem Schlauch. Naja also folgendes:
Ich habe eine main.cpp und 2 Klassen. Nennen wir sie Ceins und Czwei. Ein Objekt der Klasse Ceins namens "Daten" existiert waerend der Laufzeit des Programms (in der int main()). Die Klasse Ceins hat eine Funktion "Erstellen".
Nun moechte ich mittels Daten.Erstellen(VariableA) in dieser Funktion ein Objekt der Klasse Czwei erstellen dessen Name "VariableA" ist. Nur wie weise ich den Namen zu?
Ich kann ja nicht in der Funktion Erstellen einfach Czwei VariableA() machen. Sonst heisst das Objekt ja VariableA und nicht so wie der Wert der in der VariableA steckt.Also entweder ich steh boese auf dem Schlauch oder wie geht das?
Danke schonmal fuer jede Hilfe.
Gruss Domeus
-
Hm, Copykonstructor anwenden, wenn du die Variable kopieren willst.
Ansonsten kannst du objekten keinen Namen zur Laufzeit geben.
Was willst du denn genau machen ?Devil
-
Das ganze ist eine Uebungsaufgabe aus einem Skript eines Informatikprofessors. Es soll den Spritverbrauch und die Kosten des Fahrzeugs auswerten.
Ich habe also eine main.cpp mit dem Menu. Dazu eine Klasse CFahrtenbuch das einen Konstruktor hat in dem ich bei der Erstellung des Objekts diesem gleich die Membervariablen m_Kilometerstand und m_Tankfuellung zuweise.
Dann gibt es noch die Klasse CEintrag die sozusagen das Verbindungsglied zwischen CFahrtenbuch und main.cpp herstellt und verwaltet. Von dieser Klasse existiert ein Objekt "Auswahl" in der main-Funktion. Diese Klasse hat nun eine Funktion NeuesAuto. Rufe ich diese mittels Auswahl.NeuesAuto() auf soll sie den Benutzer nach dem Nummernschild fragen und dann ein Objekt erstellen. Dann koennte ich spaeter mittels Objekt.m_Kilometerstand oder Objekt.m_Tankfuellung die Werte der entsprechenden Autos veraendern.Aufgabenstellung: (Ist nicht sehr praezise aber eigentlich ist es auch eine Hoersaalaufgabe)
Für eine CarSharing-Gesellschaft soll ein Fahrtenbuch
entwickelt werden, in dem für jedes Auto jede Fahrt
und jedes Tanken eingetragen wird. Der Preis pro Kilometer
wird dann für jede Fahrt aus dem durchschnittlichen
Benzinverbrauch des Autos bei der letzten Tankfüllung
berechnet.Ich glaube auch nicht, dass vorgesehen war das man neue Autos einfuegt. Aber ich mach halt gerne immer etwas mehr. Ausserdem will ich ja lernen.
So nun habe ich mir eben die Loesung wie oben beschrieben vorgestellt aber an der Umsetzung mangelt es halt noch.
Hoffe das war nicht zuviel Text und ich verlange nicht zuviel Hilfe.
Gruss Domeus
P.S. Ich poste einfach mal den Code den ich bis jetzt habe:
int main() { CEintrag Auswahl; int Menuauswahl; bool ProgrammBeenden = false, Erfolgreich; do { cout << "Fahrtenbuch" << endl << endl; cout << "Hauptmenu:" << endl; cout << "1 = Neues Auto hinzufuegen" << endl; cout << "2 = Fahrt eintragen" << endl; cout << "3 = Betankung eintragen" << endl; cout << "0 = Programm beenden" << endl; cout << "--------------------------" << endl; cout << "Auswahl: "; cin >> Menuauswahl; cout << endl; if (Menuauswahl == 1) { Erfolgreich = Auswahl.NeuesAuto(); if (Erfolgreich) cout << endl << "Neues Auto hinzugefuegt." << endl << endl; else cout << endl << "Neues Auto konnte nicht hinzugefuegt werden." << endl << endl; cout << "Bitte Taste druecken zum fortfahren." << endl; getchar(); } else if (Menuauswahl == (2 || 3)) { } else if (Menuauswahl == 0) { ProgrammBeenden = true; } else { cout << "Falsche Eingabe! Bitte Taste druecken und wiederholen." << endl; getchar(); } system("cls"); char Muell; cin.clear(); do cin.get(Muell); while (Muell!='\n'); } while (ProgrammBeenden == false); return 1; } // Aus CEintrag bool CEintrag::NeuesAuto() { char Nummernschild; cout << "Neues Auto eingeben:" << endl; cout << "--------------------" << endl; cout << endl; cout << "Nummernschild:"; cin >> Nummernschild; CFahrtenbuch Nummernschild(0,0); //<-- Hier ist der Wurm drin. return true; }
-
Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC mit dem Visual C++ in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
char Nummernschild; ... CFahrtenbuch Nummernschild(0,0); //<-- Hier ist der Wurm drin.
Ansonsten kam nicht rüber was Du machen möchtest ?!
-
Ok ein letzter Versuch.
Also Ich moechte ein art Fahrtenbuch machen. Die Klasse CFahrtenbuch soll sozusagen der Speicher fuer die Daten sein. Die main.cpp soll lediglich das Grundgeruest und das Menu beinhalten. Die einzelnen Befehle des Menus (Neues Auto anlegen, gefahrene Kilometer eintragen, etc.) soll aber nicht durch die Klasse CFahrtenbuch ausgefuehrt werden sondern ueber die Klasse CEintrag.
Wenn ich nun im Menu die "1" auswaehle also "Neues Auto hinzufuegen" dann soll die Funktion "NeuesAuto" der Klasse CEintrag den Benutzer nach einem Kennzeichen fragen und mittels diesem ein neues Objekt der Klasse CFahrtenbuch anlegen. Dieses Objekt wiederum hat die Membervariablen m_Kilometerstand und m_Tankfuellung. Diese Membervariablen kann ich dann benutzen um den Autos die entsprechenden Werte zuzuweisen. Also gefahrene Kilometer, nachtanken, etc.
Mein Problem ist, dass ich nicht weiss wie ich mittels der, in der Laufzeit des Programms, eingegeben Kennzeichen ein neues Objekt der Klasse CFahrtenbuch anlegen kann.
Oder laesst es sich anders bewerkstelligen das ich zu jedem Kennzeichen eine eigene Membervariable fuer Kilometerstand und Tankfuellung habe und diese dann aufrufen oder entsprechend veraendern kann. Das Prinzip soll allerdings schon etwa so sein wie beschrieben.
Achja, dass das Programm sicher auch auf andere Art einfacher gemacht werden kann ist schon klar.
Nur dies soll ja eine Uebungsaufgabe sein und kein moeglichst perfektes Programm um ein Fahrtenbuch zu erstellen. Es dient einfach dem Umgang mit Klassen, Objekten, Membervariablen, etc.So ich hoffe ihr koennt damit was anfangen. Danke nochmal fuer jeden Tip.
Gruss Domeus
-
Problem geloest.
Danke trotzdem allen die geantwortet haben.
Gruss Domeus