Enums mit eigenem Typ



  • Ich bins schon wieder. Ich würde gerne enums mit __int64 anlegen. Ein "normaler" Enum speichert ja die Wert als ints ab. Nun habe ich in der MSDN folgendes gefunden:

    public enum class day_bool : MYBOOL {sun = true, mon = false, tue = true, wed = false, thu = true, fri = false, sat = true};
    
    public enum class day_char : char {sun, mon, tue, wed, thu, fri, sat};
    

    Leider führt der Code bei mir zu Fehlern und zwar folgendem:
    error C2332: 'enum': Fehlender Tagname

    Weiß einer woran das liegt? Oder gibt es eine andere Möglichkeit einen Haufen von __int64 Bitmasken schön abzulegen? Alles als Konstanten definieren fände ich ein wenig unübersichtlich bzw. nicht so schön unter einem Enum-Typen zusammengefaßt.

    Danke für Antworten



  • Ich habs jetzt erstmal so gelöst das ich zwei Enums angelegt habe. Der eine gibt den Wert an (also die Bits die 1 sein sollen) und der andere gibt an wieweit dieser geshiftet werden muss :).



  • Erstens: 😮 Was ist denn das für eine Sprache? Ich würde spontan auf C# oder Java tippen, aber definitiv nicht auf C(++).

    Zweitens: Wozu soll denn das gut sein?



  • Also zu 1.)

    Ich habs in der MSDN gefunden. Dort steht unter Enums => Enums mit eigenem Type und dort steht das Beispiel. Ich müßte jetzt Lügen wenn ich sagen würde ich hab drauf geachtet welche Sprache es ist :).

    zu 2.)
    Ich brauche das als Maske für "64-Bitstrings". Also ich hab einen 64-Bitstring
    0001001011...01 und muss wissen, was z.b. in den Bits von 0 - 2 steht. Dazu wollte ich die __int64 iValue nehmen und mit dem &-Operator zu einem Enum den Wert bestimmen der auf diesen Bits steht. Dazu wollte ich ein Enum anlegen der Art

    enum EMASK {
    eAnzahl = 0x7, // Bit 0 - 2
    ePosition = 0x24, // Bit 3 und 4
    ...
    };

    Ein enum kann aber keine "großen" __int64 fassen. Deswegen meine Frage 🙂

    Wie gesagt habe ich das jetzt mit zwei Enums gemacht. Der eine gibt die Größe an (also wieviele Bits) und der andere die Position.

    Ich hoffe das ist verständlich. Für bessere Ideen bin ich immer offen 🙂

    Danke


Anmelden zum Antworten