Derzeit bin ich mit diesem Ansatz:korrekte Art und Weise Singleton in Cocos2Dx zu implementieren
class Singleton {
public:
static Singleton &getInstance() {
static Singleton *instance = new Singleton();
return *instance;
}
void getData();
private:
Singleton() {}
};
Auf diese Weise habe ich eine Methode aus Singleton Schreiben verwenden können:
Singleton::getInstance.getData();
Und dies scheint der richtige Weg eine Menge Tutorials für C++ 11 lesen. Aber das Lesen durch cocos Director Singleton-Code (auch FileUtils etc ..), habe ich gesehen, dass Cocos diesen anderen Ansatz verwendet:
class Singleton {
public:
static Singleton *getInstance() {
instance = new Singleton();
return instance;
}
void getData();
private:
Singleton() {}
static Singleton *instance;
};
Mit diesem Ansatz, den ich schreiben müssen:
Singleton::getInstance->getData();
Wegen der Zeiger * getInstance anstelle der Referenz & getInstance.
Ich denke, der Unterschied ist groß, aber ich weiß nicht, ob der eine Weg richtig ist und der andere nicht.
Bitte helfen Sie mir, dieses Konzept zu sortieren.
Singletons sind nicht in C++ benötigt. Verwenden Sie eine Funktion, die einen Verweis auf ein statisches Objekt zurückgibt. –
danke @RichardHodges können Sie mich bitte etwas spezifisch verknüpfen? Ich wollte ein Singleton, um ein gemeinsames Spieldatenobjekt zu erstellen, und ich dachte, es wäre der richtige Weg. –