Alle Struct Elemente initialisieren



  • Hallo C++ Community,

    ich habe eine Funktion namens InitStruct(), mit der ich während der Laufzeit, in gewissen Abständen, alle Elemente einer Struktur auf 1 setze. Leider muss ich in dieser Funktion bei jedem Element = 1 hinschreiben. Diese Funktion ist sehr lang und das ist nicht das was ich möchte.

    Gibt es eine Möglichkeit, z.B. ein Aufruf, mit der ich alle Elemente einer Struktur direkt mit 1 initialisiere?

    Vielen Dank 😕



  • Wenn das Objekt danach in einem Zustand ist, wie direkt nach einem C'tor-Aufruf, kannst Du das Objekt evtl. mit einem so konstruierten Objekt swap() en.



  • Furble Wurble schrieb:

    Wenn das Objekt danach in einem Zustand ist, wie direkt nach einem C'tor-Aufruf, kannst Du das Objekt evtl. mit einem so konstruierten Objekt swap() en.

    Ich habe irgendwo gelesen, dass ich mit:

    <StructVariable> = {};

    alle Elemente der Struktur auf null setze. Ist das so richtig?



  • kartal66 schrieb:

    Ich habe irgendwo gelesen, dass ich mit:

    <StructVariable> = {};

    alle Elemente der Struktur auf null setze. Ist das so richtig?

    Nein. leider nicht.

    Ich habe jetzt folgendes vor Augen:

    class Widget{
      int i1;
      int i2;
      void init(){
        i1 = 1;
        i2 = 1;
      }
    public:
      Widget() : i1(1), i2(1) {}
    };
    

    Aber ich befürchte, dass das nicht Deinem Problem entspricht...Also zeig mal ein wenig Code...



  • Wenn es sich um eine POD-Struktur handelt, könntest Du memset benutzen und damit alles auf 0 setzen.



  • kartal66 schrieb:

    ich habe eine Funktion namens InitStruct(), mit der ich während der Laufzeit, in gewissen Abständen, alle Elemente einer Struktur auf 1 setze. Leider muss ich in dieser Funktion bei jedem Element = 1 hinschreiben. Diese Funktion ist sehr lang und das ist nicht das was ich möchte.

    Dein Problem ist vermutlich weniger dass die Funktion so lang ist, sondern dass die Struktur so viele Member hat. Die lange Funktion ist also vermutlich nur ein Symptom eines Designproblems, das woanders liegt.
    Um das eigentliche Problem zu beheben braucht man allerdings etwas mehr Informationen über die Struktur:
    Wozu brauchst du sie, was machst du damit, und warum must du sie immer wieder mit Einsen belegen?


Anmelden zum Antworten