001
03.12.2016, 18:29 Uhr
~Julia_w
Gast
|
C++: |
/*Das Programm soll mindestens folgende Anforderungen erfullen: Verwaltung der Kunden: - Daten erfassen. Die Erfassung der Daten soll uber istream (>>) Operatoruberladung erfolgen. - Alle Kundendaten ausgeben. Die Ausgabe soll uber ostream (<<) Operatoruberladung erfolgen. Verwaltung der Reservierungen: - Reservierung vornehmen - Motorrad herausgeben (mit der Abfrage des Kundenvor- und nachnamens) Dateiverwaltung: - Der aktuelle Stand der Reservierungen soll in die Datei .reservierungen.txt¡§ geschrieben werden. Falls die Datei noch nicht existiert soll sie angelegt werden, ansonsten sollen die Daten an das Ende der Datei angehangt werden. Lesen der Daten aus der Datei ist nicht gefordert!*/
#include <cstdlib> #include <iostream> #include <string> #include <vector> #include <stdio.h> #include <fstream> using namespace std;
class Reservierung { friend class Motorrad; private: string name, vorname, adresse; int telefon, gebJahr;
public: bool fhrschein_A; bool uebergabe; // Konstruktormethode mit Elementinitialisierung Reservierung(string n, string v, string addy, int tele, int born, bool license, bool release): name(n), vorname(v), adresse(addy), telefon(tele), gebJahr(born), fhrschein_A(license), uebergabe(release) {} ~Reservierung() {} //virtuelle Funktion macht classReservierung zur abstrakten Klasse };
class Motorrad:public Reservierung { private:
public: // Konstruktormethode mit Elementinitialisierung Motorrad(string n, string v, string addy, int tele, int born, bool license, bool release): Reservierung(n, v, addy, tele, born, license, release) {} ~Motorrad() { cout<<"Reservierung gelöscht!"<<endl; //Löschen der Reservierung, bzw. freigeben des Speichers //virtuelle Funktion muss überschrieben werden } void datenausgeben() //schreiben des Reservierungsdaten in reservierung.txt { cout << "Motorrad: " << name << ", " << vorname << ", " << adresse << ", " << telefon << " " << endl; cout << "Fuehrerschein Klasse A vorhanden?: " <<fhrschein_A << endl; fstream f; f.open("reservierungen.txt", ios::out | ios::app); f << "Motorrad: " << name << ", " << vorname << ", " << adresse << ", " << telefon << " " << "Fuehrerschein Klasse A vorhanden?: " <<fhrschein_A << "Uebergabe durchgeführt? "<< uebergabe<<endl << endl; f.close(); } };
struct Kunde { string name, vorname, adresse; int gebJahr, telefon; bool fhrschein_A, uebergabe; };
void eingabe(struct Kunde *zeiger) { cout<<"Name eingeben. "<<endl; cin>>(*zeiger).name; cout<<"Nachname eingeben. "<<endl; cin>>(*zeiger).vorname; cout<<"Adresse eingeben. "<<endl; cin>>(*zeiger).adresse; cout<<"Telefonnummer eingeben. (nur Zahlen!)"<<endl; cin>>(*zeiger).telefon; cout<<"Geburtstag eingeben. [ddmmyy]"<<endl; cin>>(*zeiger).gebJahr; cout<<"Fuehrerschein Klasse A vorhanden? [ja=1 || nein=0]"<<endl; cin>>(*zeiger).fhrschein_A; cout<<"Motorad uebergeben? [ja=1 || nein=0]"<<endl; cin>>(*zeiger).uebergabe; }
int main(int argc, char *argv[]) { string bike[]={"Suzuki_Bandit", "Honda_TransAlp", "BMW_F_650_GS", "Kawasaki_ZZR1400"}; struct Kunde customer[5]; for(int i=0; i<4; i++) { eingabe(&customer[i]); Motorrad *bike[i]=new Motorrad(customer[i].name, customer[i].vorname, customer[i].adresse, customer[i].telefon, customer[i].gebJahr, customer[i].fhrschein_A, customer[i].uebergabe); //Instanz von Motorrad deklarieren bike[i]->datenausgeben(); // Aufruf der Funktion datenausgabe() if((bike[i]->fhrschein_A==false)||(bike[i]->uebergabe==true))delete bike[i]; // wenn keine Führerscheinklasse A vorliegt, Reservierung löschen durch Destruktoraufruf } system("PAUSE"); return EXIT_SUCCESS; }
|
Bei der folgenden main erhalte ich folgende Fehlermeldung: GProgrammieren C\ESA 2_2\main.cpp variable-sized object `bike' may not be initialized
Wenn ich aber statt bike[i] den Text "BMW_F_650_GS" eingebe funktioniert es. |