[C/C++] Problem mit enum

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Hanutak11, 22. Juni 2011 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 22. Juni 2011
    Problem mit enum

    Hallo
    kann mir jemand sagen was ich falsch mache.
    Ich weiß nicht wirklich wie ich das mit dem enum machen soll

    Spoiler
    .h
    Code:
    #ifndef Gebaeude_h
    #define Gebaeude_h
    #include <string>
    #include <iostream>
    using namespace std;
    
    
    class Gebaeude
    {
    public: 
     
     void SetFlaeche(float f) { Flaeche=f; }
     float GetFlaeche() { return Flaeche; }
     void SetStrasse(string s) { Strasse=s; }
     string GetStrasse() { return Strasse; }
     void SetStadt(string st) { Stadt=st; }
     string GetStadt() { return Stadt; }
     void SetBauart(enum b) { Bauart=b; }
     enum GetBauart() {return Bauart; }
     void SetDachart(enum d) { Dachart=d; }
     enum GetDachart() { return Dachart; }
     void SetHausnr(short int h) { Hausnr=h; }
     short int GetHausnr() { return Hausnr; }
     void SetPlz(int p) { Plz=p; }
     int GetPlz() { return Plz; }
     
    private:
     
     float Flaeche;
     string Strasse, Stadt; 
     enum Bauart{Flachdach, geneigtes Dach, freigeformtes Dach};
     enum Dachart{Massivbau, Lehmbau, Holzbau, Fertigbauweise};
     short int Hausnr;
     int Plz;
    };
    #endif
    .cpp
    Code:
    #include <iostream>
    #include "Gebaeude.h"
    #include <string>
    using namespace std;
    
    
    int main ()
    {
    Gebaeude Objekt;
    Objekt.SetBauart("Lehmdach");
    Objekt.SetFlaeche(1000);
    Objekt.SetStadt ("Musterstadt");
    Objekt.SetStrasse ("Gluecksweg");
    Objekt.SetDachart ("2");
    Objekt.SetHausnr (11);
    Objekt.SetPlz (12345);
    cout << Objekt.GetFlaeche()<<"\n";
    cout << Objekt.GetStadt()<<"\n";
    cout << Objekt.GetStrasse()<<"\n";
    cout << Objekt.GetHausnr()<<"\n";
    cout << Objekt.GetPlz()<<"\n";
    cout << Objekt.GetStrasse()<<"\n";
    cout << Objekt.GetStadt()<<"\n";
    
    system ("Pause");
     return 0;
    }
     
  2. 22. Juni 2011
    AW: Problem mit enum

    Die Deklaration des Enums muss auf jeden Fall erstmal aus der Klassendeklaration raus. Dann ist weiterhin der Rückgabetyp der Methode GetBauart() nicht enum sondern Bauart, denn so hast du das enum genannt. Selbes gilt für GetDachart() und die Parameter der Setter. Schließlich musst du im privaten Teil der Klasse ein Feld des Typs Bauart und eins des Typs Dachart anlegen. Und statt SetBauart("Lehmdach") benutzt du SetBauart(Lehmdach).

    Du solltest dich da vllt. besser noch mal genauer drüber informieren...
    Enumerated Types - Enums in C++ - Cprogramming.com
     
  3. 22. Juni 2011
    AW: Problem mit enum

    Die Definition muss nicht aus der Klassendefinition raus, er muss nur public gemacht werden.
    Danach kannst Du z.B. per Gebaeude::BauArt darauf zugreifen und einen Wert übergeben.
     
  4. 22. Juni 2011
    AW: Problem mit enum

    Code:
    void SetBauart(enum b) { Bauart=b; }
    enum GetBauart() {return Bauart; }
    void SetDachart(enum d) { Dachart=d; }
    enum GetDachart() { return Dachart; }
    das geht so nicht, da "enum" kein typ ist sondern ein spachkonstrukt zum erstellen bzw. zum refrenzieren von enum-typen.

    Code:
    #include <string>
    #include <iostream>
    using namespace std;
    
    
    class Gebaeude
    {
    public:
     enum Bauart_ {Flachdach, geneigtes_Dach, freigeformtes_Dach};
     enum Dachart_ {Massivbau, Lehmbau, Holzbau, Fertigbauweise};
    
     void SetFlaeche(float f) { Flaeche=f; }
     float GetFlaeche() { return Flaeche; }
     void SetStrasse(string s) { Strasse=s; }
     string GetStrasse() { return Strasse; }
     void SetStadt(string st) { Stadt=st; }
     string GetStadt() { return Stadt; }
     void SetBauart(enum Bauart_ b) { Bauart=b; }
     enum Bauart_ GetBauart() {return Bauart; }
     void SetDachart(enum Dachart_ d) { Dachart=d; }
     enum Dachart_ GetDachart() { return Dachart; }
     void SetHausnr(short int h) { Hausnr=h; }
     short int GetHausnr() { return Hausnr; }
     void SetPlz(int p) { Plz=p; }
     int GetPlz() { return Plz; }
    
    private:
     enum Bauart_ Bauart;
     enum Dachart_ Dachart;
     float Flaeche;
     string Strasse, Stadt;
     short int Hausnr;
     int Plz;
    };
    
    
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.