enum Problem
-
Das Problem ist, ein enum hat keinen Eingabeoperator.
Du musst entweder selber einen Schreiben oder eine int/string Variable nutzen.
-
Nathan schrieb:
r
Du musst entweder selber einen Schreiben? Als Anfänger unmöglich ?
-
Nathan schrieb:
r
Du musst entweder selber einen Schreiben? Als Anfänger unmöglich ?
-
Skeptar schrieb:
Nathan schrieb:
r
Du musst entweder selber einen Schreiben? Als Anfänger unmöglich ?
Ach was, brauchst einfach nur eine Funktion operator>> zu nennen mit den passenden Parametern. Tutorials gibts massig.
-
Mit welchem Stichwort? :p
-
"Stream-Operatoren überladen"
-
Okey ich habe nun etwas gefunden:
std::istream& operator>>(std;:istream& is, MyEnum& e) { ... }Aber wie ist das auf mein Beispiel anwendbar?
Und was bedeutet das genau?Und was ist eigendlich besser?
Den Operator zu überladen oder eine "hilfsvariable" erstellen?
-
Skeptar schrieb:
Okey ich habe nun etwas gefunden:
std::istream& operator>>(std;:istream& is, MyEnum& e) { ... }Aber wie ist das auf mein Beispiel anwendbar?
Und was bedeutet das genau?Diese Funktion wird aufgerufen, wenn du ein Objekt vom Typ MyEnum einlesen willst.
Du schreibst nun Code hinein, der für dich das enum einliest.
Siehe auch: http://stackoverflow.com/questions/5633784/input-from-stream-to-enum-type
-
Danke dir

Ich weiß das gehört nicht mehr in diesem Titel rein aber habe keine Lust schon wieder einen neuen Thread zu eröffnen

Meine Frage, ist das Programm soweit in Ordnung (einrückung, verwendung der Schlüsselwörter, verbesserungen, ...).
Das Programm läuft auch soweit, nur so als Kontrolle.#include <iostream> #include <string> using std::cout; using std::cin; using std::string; int main(){ enum art{m=1,w=2}; struct person{ enum art geschlecht; //muss dort <- das Schlüsselwort "enum" vor art? string name; unsigned int alter; }eintrag_person; struct geburtstag{ int tag; int monat; int jahr; }eintrag_geburtstag; //********************Eingabe**************************** cout << "Bitte den Vor- und Nachname eingeben: "; getline(cin, eintrag_person.name); char auswertung_geschlecht; cout << "Bitte Geschlecht eingeben (m/w): "; cin >> auswertung_geschlecht; switch (auswertung_geschlecht){ case 'm': eintrag_person.geschlecht=m; break; case 'w': eintrag_person.geschlecht=w; break; default : system("cls"); cout << "Falsche eingabe!"; return 0; } cout << "Bitte Alter eingeben: "; cin >> eintrag_person.alter; cout << "Bitte das Geburtsdatum eingeben\n" << "Tag: "; cin >> eintrag_geburtstag.tag; if(eintrag_geburtstag.tag > 31){ cout << "Ungültige Eingabe!"; return 0; } else{} cout << "Monat: "; cin >> eintrag_geburtstag.monat; if(eintrag_geburtstag.monat > 12){ cout << "Ungültige Eingabe!"; return 0; } else{} cout << "Jahr: "; cin >> eintrag_geburtstag.jahr; //***************Ausgabe********************************* cout << "\n\nAusgabe:\n"; cout << "Vor- und Nachname: " << eintrag_person.name; cout << "\nGeschlecht: "; if(eintrag_person.geschlecht==m){ cout << "maennlich"; } else{ cout << "weiblich"; } cout << "\nAlter: " << eintrag_person.alter; cout << "\nGeburtsdatum: " << eintrag_geburtstag.tag << "." << eintrag_geburtstag.monat << "." << eintrag_geburtstag.jahr; return 0; }
-
nein da muss kein enum vor art hin. die schlüsselwörter für typendefinitionen (struct, class, enum, union) müssen vor der deklaration / definition von instanzen nie hingeschrieben werden in c++. (in c ist es was anderes)