"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