Was kann man mit enum anstellen?



  • Hallo

    was kann ich den mit enum eigentlich anstellen? Ich kann mir ein paar Wörter durchnummerieren lassen aber was hab ich da davon? Kann mir jemand helfen? Ich verstehe nicht so ganz den sinn davon.



  • es harmoniert wunderbar mit switch.



  • anonymus001 schrieb:

    was kann ich den mit enum eigentlich anstellen?

    Nichts, was du mit int nicht auch hinbekommen würdest. Insofern ist enum keines der grundlegend wichtigen Features von C++. Vielmehr ist enum einfach ein Baustein zur Vervollständigung des Typsystems.
    Der eigentliche Sinn von enum ist, den Code verständlicher zu gestalten, und dem Anwender gewisse Restriktionen bei der Wertzuweisung aufzuerlegen. Bsp.

    void foo(int); // 1
    
    enum os
    {
        os_windows,
        os_linux,
        os_mac
    };
    
    void bar(os); // 2
    

    Bei Funktion 1 kannst du alles übergeben, komplett über den gesamten Wertebereich hinweg. Funktion 2 hingegen erlaubt nur das, was in os definiert wurde. Man kann zwar auch etwas tricksen und Casts verwenden, dann muss der Anwender das aber schon explizit machen. Und dann ist es auch seine eigene Schuld, wenn er sich damit ins Bein schiesst. Zudem ist bar(os_windows) einfach intuitiver, als foo(0).
    Grob gesagt, enum ermöglicht es einem für einen Typ festzulegen, welche Werte Instanzen davon annehmen dürfen.
    Sollte zB der unwahrscheinliche Fall eintreten, dass ein Compiler kein bool kennt, so könnte man diesen mit folgendem enum besänftigen

    enum bool
    {
        false,
        true
    };
    

    Alle anderen Möglichkeiten die C++ bietet, wären auf jeden Fall umständlicher.



  • ich hab gestern den lcc3.3 getestet: so wie ich das teil betrieben hab mag
    der nur BOOL und nicht bool. 😉
    okay ist nur ein c-compiler mit erweiterungen. 😞
    ja ich weis: "myheader.h" und 100 zeilen typedef oder ähnliches. 😉
    und dann quelltext schreiben, "myh.." nicht erwähnen da über projekt
    "myspezi.c(pp)" über den linker eingebunden und wundern das andere sich
    erst mal ausgiebige gedanken über die fehlercodes machen. 🙂

    mfg f.-th.



  • Bin mir zwar nicht sicher, was der Beitrag meines Vorredners mit dem Thema zu tun hat.
    Zum Thema C und bool empfehle ich aber eine gute Lektüre über <stdbool.h>.


Anmelden zum Antworten