enum Datatyp in einem Struct



  • Hallo Leute,

    ich verstehe nicht wie ich einen struct, welcher einen enum Variable hat, zuweisen. Ich kriege immer wieder Fehler.

    Mein Code sieht so aus,

    #include <iostream>
    #include <vector>
    #include <string>
    
    using namespace std;
    
    /*Erstellen Sie ein struct Auto (Großschreibung beachten!) aus den Feldern Marke (String), Typbezeichnung (String), kW (int), Farbe(enum) und Extras(enum Liste).
    
    Ein Auto kann nur eine Farbe haben, aber beliebig viele Extras.
    */
    
    struct Auto {
    
    	string Marke;
    	string Typ;
    	int		Kw;
    	enum	Farbe;
    	enum	Extras;
    
    };
    
    using namespace std;
    
    int main() {
    
    	vector <string> farbennamen = { "rot","blau","gelb","weiss","schwarz" };
    	enum Farben { rot, blau, gelb, weiss, schwarz };
    	enum Extras { discoball, abs, klimaanlage };
    
    	Farben frb = blau;
    	Extras ext = discoball;
    
    	farbennamen.at(static_cast<size_t>(blau));
    
    	vector <Auto> auto1 = { {"BMW","M3",150,frb,ext} };
    
    	return 0;
    }
    

    vector <Auto> auto1 = { {"BMW","M3",150,frb,ext} };

    hier ist der Fehler, ich weiß nicht wie ich das beheben kann.

    LG
    Zengin 🙂



  • Du musst die enum Definitionen aus der main rausziehen. Wie soll Auto davon wissen, wenn sie lokal sind?



  • out schrieb:

    Du musst die enum Definitionen aus der main rausziehen. Wie soll Auto davon wissen, wenn sie lokal sind?

    Danke für deine Antwort, den gleichen Fehler hab ich aber immer noch, obwohl die Definitionen jetzt Global sind 😞



  • Welchen Datentyp haben Frabe und Extras in deiner struct?



  • out schrieb:

    Welchen Datentyp haben Frabe und Extras in deiner struct?

    enum, die Aufgabe war so,

    Erstellen Sie ein struct Auto (Großschreibung beachten!) aus den Feldern Marke (String), Typbezeichnung (String), kW (int), Farbe(enum) und Extras(enum Liste).
    •Ein Auto kann nur eine Farbe haben, aber beliebig viele Extras.
    •Schreiben Sie die Methoden print und read, um den Zustand eines Autos auf dem Bildschirm auszugeben, oder von der Tastatur einzulesen.
    •Beachten Sie beim Einlesen, dass jedes Extra nur einmal in der Liste der Extras auftreten darf.
    •Für die Ein-/Ausgabe ist es vorteilhaft, für die enums globale Konstanten mit den passenden Bezeichnungen zu definieren, z.B.: const vector<string> farbennamen {"rot","gruen","blau"}; enum class Farbe {rot, gruen, blau} farbe{Farbe::blau}; cout << farbennamen.at(static_cast<size_t>(Farbe::gruen)); cout << farbennamen.at(static_cast<size_t>(farbe));

    einige Schritte habe ich einfach übersprungen sowie read Funktion. Habe ich was hier falsch verstanden?



  • enum ist kein Datentyp. Du kannst mit enum einen Datentypen definieren, was du gemacht hast. Den musst du in deiner struct natürlich benutzen.


Log in to reply