enum-Frage



  • Ich bastel grad wengl rum, hab jetz hier was mit enums, will da so was wie Tictactoe schreiben, hab des schon mal in C gemacht, aber jetz will ichs mit enums machen, also die Steine ham n enum fill, des die Werte 'X', 'O', und ' ' beinhaltet. Jetzt will ich im Konstruktor von meiner TicTacToe Klasse alle 9 Steine mit ' ' füllen lassen, aber irgendwie geht des net so, wie ich mir des gedacht habe:

    for(int i = 0; i < 9; i++) Boppels[i].fill = leer; // oder Boppels[i].fill = ' ';
    

    Weiß einer, wie ich des dann machen muss, ich mein bestimmt, aber könnte es mir einer mitteilen, wie ich den Wert setzen muss?
    Btw das enum ist public;



  • lol



  • wie sieht dein enum aus?

    so müsste es doch funktionieren

    enum eFillings
    {
        EMPTY,
        CROSS,
        CIRCLE
    };
    Boppels[i].fill = EMPTY;
    


  • class Steine
    {
          public:
                 enum fill {X = 'X', O = 'O', leer = ' '};
    };
    

    kp, will leer setzen, geht aba net

    26 C:\Temp\Programme\tictactoe.cpp invalid use of enum Steine::fill' 26 C:\\Temp\\Programme\\tictactoe.cppleer' undeclared (first use this function)

    Des sin die Fehlermeldungen



  • Was du da schreibts macht net wirklich sinn,
    du brauchst ein member in deiner Klasse die den gegenwärtigen
    Zustand deines Feldes (eines Kästchens) beschreibt, ne enum kannst
    dafür net verwenden.
    Also Quasi so:

    enum fill {X = 'X', O = 'O', leer = ' '};
    class Steine
    {
    public:
    short fill;
    };

    und dann
    for(int i = 0; i < 9; i++) Boppels[i].fill = fill.leer;

    Ich weiss aber net ob du in ner enum tatschächlich char-konstanten verwenden darfst,
    aber anscheinend beschwert sich dein Compiler ja net.
    Mit ner enum legst du eben nur Konstanten an und die können ihren wert net ändern
    also:
    enum {
    EMPTY = 1,
    CROSS = 2,
    }

    definiert die Konstanten EMPTY mit dem Wert 1, und CROSS mit dem Wert 2,
    im programm dann sagen EMPTY = 3 oder so was geht net 😉



  • Ne, des passt scho, ich probier des halt ma dann eben so aus, hab jetz dann halt genommen:

    enum fill {leer = 32,O = 79,X = 88};
    

    Des is dafür gut, dass ich dann einfach die Werte ausgeben lassen kann und net so was mit switch oda if oda so was machen muss, sondern einfach den jeweiligen Wert ausgeben kann.

    Weil dann kann ich die Werte einfach ausgeben lassen mittels des enums und nem cast auf char, z.b.:

    for(int i = 0;i<9;i++) cout<<(char)Boppels[i].fill<<endl;
    

    oder so ähnlich


Anmelden zum Antworten