Benutzerdefinierte Datentypen(mit enum)



  • Hallo

    für was sind die Benutzerdefinierten Datentypen eigentlich gut?
    Könnt ihr mir ein Beispiel geben oder so?

    und noch eine Frage:

    was hat es mit den Namensräume aufsich,
    für was sind sie gut
    und wie soll ich sie am besten anwenden?

    LG Tobias



  • Enum kannst du super nutzen um Magic-Numbers zu verhindern. Angenommen du hast z.B. ein paar Farbwerte..
    Du kannst schreiben:
    1 /* Rot /
    2 /
    Blau /
    3 /
    Grün */
    Dann musst du aber immer wissen welcher Wert welche Farbe repräsentiert, du musst also immer nachschauen.

    Oder du nimmst ein Enum:
    enum
    {
    rot = 1,
    blau = 2,
    gruen = 3
    };
    Dann weißt du sofort "Hey! 'rot' ist die Farbe rot!".

    Mit Namensräumen kannst du Funktionen oder Typen gruppieren. Das sorgt für saubereren Quelltext.



  • Wobei "enum" und "benutzerdefinierter Datentyp" erstmal gar nix miteinander zu tun haben. Wo hast du die Begriffe (auch "Namensräume") aufgeschnappt?



  • okey, das mit enum habe ich verstanden, aber was meinst du genau mit MagicNumbers?

    kannst du mit auch für namespaces beispiele geben das ich das besser kapiere
    weil da gibt es ja zb: std, und man kann ja irgentwie selber auch namespaces definieren, oder?



  • l'abra d'or schrieb:

    Wobei "enum" und "benutzerdefinierter Datentyp" erstmal gar nix miteinander zu tun haben. Wo hast du die Begriffe (auch "Namensräume") aufgeschnappt?

    in den sogenannten Buch: C++ Der Programmierer

    und in dem Kapitel "Benutzerdefinierte und zusammengesetzte Datentypen"
    taucht enum auf!

    und namespace heißt ja bekanntlicher Weiße auf deutsch namesraum



  • l'abra d'or schrieb:

    Wobei "enum" und "benutzerdefinierter Datentyp" erstmal gar nix miteinander zu tun haben.

    Aber sicher doch. Enums zählt man zu den benutzerdefinierten Typen.



  • Namespaces machst du gan einfach so:

    namespace my_namespace
    {
     class foo{};
     //...
     class string{};
    }
    

    foo befindet sich jetzt im Namensraum my_namespace .

    Namensräume dienen dazu, um Namenskonflikte zu vermeiden und eine Möglichkeit geben soll um mehrere (verschiedene) Typen, die gleich heissen benutzen zu können.
    Oben habe ich z.B noch string drin, was ja gleich heisst, wie der aus dem std-Namensraum. Nun kannst du da mittels expliziter Qualifikation ( '::' ) auswählen welchen string du jetzt haben willst.

    Üblicherweise werden die Namen eines Projektes in einen Namensraum gepackt und allenfalls auch noch in Teilmodule.



  • krümelkacker schrieb:

    Aber sicher doch. Enums zählt man zu den benutzerdefinierten Typen.

    Hm, danke für die Aufklärung. Benutzerdefinierter Datentyp taucht in meiner Erinnerung immer als Zusammensetzung von eingebauten (und weiteren benutzerdefinierten) Datentypen auf, und da ist "enum" vllt. etwas fremd, vor allem auch wegen der direkten Verbindung zu int.



  • ok danke habe verstanden

    lg Tobias


Log in to reply