Softwareengineering, Singleton
-
Singleton sind eine wunderbare Möglichkeit , um einzelne Klasseninstanzen überall auf einfache Weise verfügbar zu machen , ohne dass man eine globale Variable dazu verwenden muss.
-
blurry333 schrieb:
Singleton sind eine wunderbare Möglichkeit , um einzelne Klasseninstanzen überall auf einfache Weise verfügbar zu machen , ohne dass man eine globale Variable dazu verwenden muss.
Jo, auch wenn das eben leider ein sehr verbreiteter Irrtum ist, so ist es dennoch Irrtum...
-
Mit dem Singleton muss man halt jetzt immer die Header Datei einbinden und zwar überall . Aber zumindest hat man keine globale Variable mehr.
-
dot schrieb:
Jo, auch wenn das eben leider ein sehr verbreiteter Irrtum ist, so ist es dennoch Irrtum...
In meinem Buch steht es aber so. Und das ist ein Beststeller ! Heiko Kalista: C++ für Spieleprogrammierer
-
blurry333 schrieb:
Mit dem Singleton muss man halt jetzt immer die Header Datei einbinden und zwar überall . Aber zumindest hat man keine globale Variable mehr.
Wieso hat man keine globale Variable mehr? Du hast ja immer noch ein Objekt, das in jedem Scope verfügbar ist...
-
Aber nur wenn man die Headerdatei einbindet!!!!!
-
[quote="blurry333"][quote="dot"]
blurry333 schrieb:
Jo, auch wenn das eben leider ein sehr verbreiteter Irrtum ist, so ist es dennoch Irrtum...
In meinem Buch steht es aber so. Und das ist ein Beststeller ! Heiko Kalista: C++ für Spieleprogrammierer
In meinem Buch steht was anderes. Und das ist auch ein Bestseller ! GoF: Design Patterns...
-
blurry333 schrieb:
Aber nur wenn man die Headerdatei einbindet!!!!!
Header oder nicht ändert nix daran, in welchem Scope es sich befindet...
-
nee da der Singleton nicht in der main angelegt wird sondern in einer .h Datei
-
-
int globaleVariable = 10 ; // jetzt ist sie global int main() { }
// aber !!
headerdatei.h int globaleVariable = 10 ;
#include "headerdatei.h" int main() { cout << globaleVariable // jetzt nicht mehr global }
-
globaleVariable ist in beiden Fällen global...
-
aber wenn ich in einem anderen file nicht
#include "headerdatei.h"
verwende dann kann ich kaum auf die Variable zugreifen ??
-
main.cpp
int x; int main() { void surprise(); surprise(); // who knew... }
surprise.cpp
extern int x; void surprise() { x = 42; }
-
Wie kann man eigentlich in einem großen Projekt eine globale Variable machen ?
Wenn ich in der main.cpp eine globale Variable anlege , dann kann ich die ja nicht so einfach in den anderen files verwenden ?
-
blurry333 schrieb:
Wie kann man eigentlich in einem großen Projekt eine globale Variable machen ?
Wenn ich in der main.cpp eine globale Variable anlege , dann kann ich die ja nicht so einfach in den anderen files verwenden ?Doch, genau so wie in meinem Beispiel oben...
-
Du machst das ganze genau so wie mit Funktionen.
In den Header kommt die Deklaration, in die Sourcedatei die Definition.
Deklaration: extern Type name;
Definition: Type name = default_value;
-
dot fällt auf einen blurry thread rein.
-
Jo, ich weiss auch nicht...
Zahlt euch blurry333 was, oder wieso tut ihr euch das (wiederholt) an?Ich meine OK, wenn er ne Frage stellt die nen interessanten Punkt "beinhaltet" lass ich mich ja auch manchmal hinreissen, aber ... also mit nem Stück Holz über Singletons zu diskutieren, ... weiss nicht, nicht meine Vorstellung von Spass.
-
In diesem Thread find ich blurry nicht schlimmer als die 0815 Anfänger, die Singletons wollen (zumal blurry sogar der Meinung ist, dass das blöd ist, wenngleich aus dem falschen Grund, aber immer hin ist er einen Schritt weiter); weswegen ich geantwortet habe.