"statische Blöcke"



  • Hallo,

    Ich möchte wissen ob es möglich ist Code-Blöcke zu schreiben die nur einmal ausgeführt werden. Nehmen wir an, wir haben eine Funktion mit einer statischen Variable:

    void foo()
    {
      static int b = 5;
    }
    

    Hier wird "b" nur einmal auf den Wert 5 initialisiert. Was ist aber wenn ich ein Array von DWORDs habe und es auf komplizierte Art initialisieren muss? Wie bewerkstellige ich das?

    Friede,
    Aziz



  • class bar
    {
    public:
      bar() { /* "statischer Codeblock */ };
    };
    
    void foo()
    {
      static bar A;
    }
    


  • cd9000 schrieb:

    class bar
    {
    public:
      bar() { /* "statischer Codeblock */ };
    };
    
    void foo()
    {
      static bar A;
    }
    

    Meiner Meinung nach ist das nicht ganz korrekt.

    void foo()
    {
      static bar A;
      static bar B;
    }
    

    Hier soll Singleton verwendet werden.



  • Hier soll Singleton verwendet werden.

    Ich verstehe diese Aussage nicht ganz. Ein Singelton ist eine Klasse, die nur einmal instanziert werden darf/kann. Wir reden hier aber einfach über statische Variablen.



  • @cd9000

    Sowas in der Richtung hab ich mir schon gedacht.
    Ich würde es aber folgendermaßen machen:

    struct Array
    {
      DWORD dwArray[100];
      Array(){/* DWORD Array initialisieren*/)
    }
    
    void foo()
    {
      static Array param();
    }
    


  • Helium schrieb:

    Hier soll Singleton verwendet werden.

    Ich verstehe diese Aussage nicht ganz. Ein Singelton ist eine Klasse, die nur einmal instanziert werden darf/kann. Wir reden hier aber einfach über statische Variablen.

    Heute ist definitiv nicht mein Tag. Die Lösung von cd9000 ist richtig.

    Helium schrieb:

    Ich möchte wissen ob es möglich ist Code-Blöcke zu schreiben die nur einmal ausgeführt werden.

    Ich habe die Idee die Anweisungen des Code-Blockes in der privaten Kontruktor von Singleton zu stecken. Aber das ist nicht die Lösung, die im Zusammenhang mit der Frage des Autors steht.



  • Kannst du mir noch sagen, wieso du sagst, dass das letzte Zitat von mir stammt? Das het eindeutig Aziz geschrieben.



  • darf man von lokalen klassen static instanzen anlegen? wenn ja würde ich das vorziehen, den dan müllt man den globalen namespace nicht zu


Anmelden zum Antworten