Array in struct auf Werte setzen



  • struct Foo {
       int intArray[8];
    }
    
    int main() {
       Foo foo;
       foo.intArray = {0, 8, 9, 9, 4, 7, 6, 12};   //So geht das nicht
    
       return 0;
    }
    

    Wie kann ich das Array mit Werten wie gezeigt befüllen, ohne auf jedes Element einzeln zugreifen zu müssen?


  • Mod

    C++ statt C machen:

    #include <array>
    
    struct Foo {
       std::array<int, 8> intArray;
    };  // Nach Klassendefinitionen Semikolon nicht vergessen!
    
    int main() {
       Foo foo;
       foo.intArray = {0, 8, 9, 9, 4, 7, 6, 12};   //So geht das
    }
    

    Üblicher wäre es jedoch, seine Objekte so zu gestalten, dass sie sofort bei Erstellung alle nötigen Daten erhalten und somit direkt einsetzbar sind. Also mit einem Konstruktor.



  • SeppJ schrieb:

    C++ statt C machen:

    #include <array>
    
    struct Foo {
       std::array<int, 8> intArray;
    };  // Nach Klassendefinitionen Semikolon nicht vergessen!
     
    int main() {
       Foo foo;
       foo.intArray = {0, 8, 9, 9, 4, 7, 6, 12};   //So geht das
    }
    

    Üblicher wäre es jedoch, seine Objekte so zu gestalten, dass sie sofort bei Erstellung alle nötigen Daten erhalten und somit direkt einsetzbar sind. Also mit einem Konstruktor.

    Ich hab das Array ja in ner struct und net in ner Klasse, weil ich keine Funktionen brauche...trotzdem danke für die Hilfe! 🙂



  • Shedex schrieb:

    Ich hab das Array ja in ner struct und net in ner Klasse, weil ich keine Funktionen brauche...trotzdem danke für die Hilfe! 🙂

    struct und class sind übrigens exakt dasselbe, mit dem einzigen Unterschied, dass die Standard-Sichtbarkeit (sofern nicht explizit angegeben) bei einem struct "public" und bei einer class "private" ist.
    struct s können also durchaus Konstruktoren haben.
    Es ist allerdings durchaus verbreitet, für simple Daten-"Klassen" bei denen man die Member-Variablen direkt setzt, und die keine großartige Logik über irgendwelche Memberfunktionen implementieren ein struct zu verwenden.
    Das heisst aber nicht, dass man gar keine Member-Funktionen oder Konstruktoren verwenden sollte, wenn es Sinn macht.

    Finnegan


Anmelden zum Antworten