Natürlich ist der Systemweit/Programmweit (ist wohl besser ausgedrückt) zu erreichen.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class Singleton
{
public:
void foo();
public:
static Singleton& instance() { return *instance_; }
private:
static Singleton* instance_;
};
// Irgendwo im Code
Singleton::instance().foo();
|
So...und wo ist nun das Problem? Wo brauch ich nun eine Referenz im Code? Macht alles das Singleton
Und natürlich hast mehrer Clients und das ist ja auch gewollt
Beispiel:
Du hast eine Klasse Engine. Die bekommt als Member den Log-Client. Nun kann man in jeder Methode der Klasse Engine
|
C-/C++-Quelltext
|
1
|
log_ << "Log eintrag" << LOG_FLUSH;
|
schreiben. Ist doch super. Nicht nur das. Man kann so auch sehr einfach Gruppen erzeugen. Hier z.B. eine Gruppe "Engine". Dann kannes z.B. eine Gruppe "Renderer" geben. Die Render-Klasse hat ebenfalls eine Instanz eines Log-Clients.
Nun gut. Ist natürlich jedem selbst überlassen, wie er das macht. Ist ja nur ein Vorschlag wie man es machen könnte. Der Speicheroverhead hält sich in Grenzen. Natürlich, wenn man während der gesamten Laufzeit nie den Buffer des Log-Clients löscht, kann sich so einiges ansammeln. Aber auch hier kann man eine Grenze einbauen. Wenn die überschritten wird, wird eben Automatisch alles geflushed.