2017-02-13 4 views
0

Ich generiere ein Objekt der Klasse mongocxx :: instance in einem Konstruktor.Wie bekomme ich die aktuelle Instanz von MongoDB mit C++?

Konstruktor:

mongocxx::instance instance{}; 
mongocxx::client client 
{ 
    mongocxx::uri{} 
}; 
database= client["test"]; 

Jetzt muss ich diese Instanz in einer Funktion erhalten. Ich versuchte dies:

Funktion:

mongocxx::instance::current(); 
database.drop(); 

Mein Programm stürzt ab, an der Linie mongocxx::instance::current();.

Kann mir jemand helfen?

Antwort

0

Sobald Ihr Konstruktor vollständig ausgeführt wurde, wurde das mongocxx::instance Objekt, das Sie auf dem Stapel hatten, zerstört. Sie müssen eine Instanz von instance herumhalten, die die anderen Typen überlebt.

Weitere Informationen zur Verwendung dieses Typs finden Sie in den Quellen unter instance management example.

+0

Ohne den anonymen Namespace funktioniert dieser Code für mich. Ich rufe die instance() -Methode in verschiedenen Funktionen von Objekten verschiedener Klassen auf. Das Singleton-Objekt wird nur einmal erstellt. Aber wenn ich den anonymen Namespace wie im Beispiel verwende, erhalte ich Linkfehler, wenn ich versuche, den Code zu kompilieren. –

Verwandte Themen