wo lege ich eine instanz einer klasse an?
-
1.) Wenn du ein Singleton verwenden willst, dann schon.
2.) Sinnvoller als "C-like" globale Variablen würde ich sagen.
3.) Sollte eigentlich ziemlich schnell sein. Erstens wird ja eine Referenz zurückgegeben und zweitens ist es eine einzeilige Inline-Funktion (zumindest im Release-Modus).Du kannst zwischen zwei Möglichkeiten wählen wenn dir solche Funktionsaufrufe zu lang sind.
1.) Gleich zu Beginn bevor du das Objekt benötigst deklarierst du eine Referenzvariable, die du mit der Singleton-Klasse initialisierst:
Graph &graph = TheOneAndOnlyGraph::RequestGraph(); graph.getPathName();2.) Du versuchst einfach einen kürzeren Namen für die Singleton-Klasse und die Getter-Funktion auszuwählen. TheOneAndOnlyGraph war eigentlich etwas übertrieben gewählt; ich hätte nicht gedacht, dass du es 1:1 übernimmst

//Vielleicht ist folgendes besser: GraphManager::Graph().getPathName();
-
Wo wird bei deinem Code delete aufgerufen?
-
delete?! schrieb:
Wo wird bei deinem Code delete aufgerufen?
Gegenfrage, wo wird "new" aufgerufen?
-
MiC++ha schrieb:
Gegenfrage, wo wird "new" aufgerufen?
ich würd mal sagen hier
Aziz schrieb:
[cpp]
[cpp]
bool TheOneAndOnlyGraph::Init()
{
// Does the singleton already exist?
if( ms_pSingleton )
true;ms_pSingleton = new TheOneAndOnlyGraph();
if( !ms_pSingleton )
return false;//Additional Code..
}
-
Stimmt!
Das hatte ich übersehen.
-
-
dankeschön für die antworten, speziell für den link!
@Aziz: ach weisst du, das mit dem TheOneAndOnlyGraph hat mir grad so gefallen, da hab ichs grad so übernommen..
(ist mal son richtig aussagekräftiger class-name)
-
delete?! schrieb:
Wo wird bei deinem Code delete aufgerufen?
Eine sehr gute Frage

Eine Methode zu schreiben, welche die Instanz freigibt wäre empfehlenswert

-
oder die instanz mit dem schlüsselwort static erstellen wie in dem link gezeigt ist
-
Natürlich, so kann man es auch implementieren. Der Vorteil meiner Version ist jedoch - sofern man es benötigt, dass man den Zeitpunkt der Konstruktion sowie den Zeitpunkt der Destruktion des Singletons kontrollieren kann.
-
Genau

-
[edit][/edit]