4 votes

ne peut pas créer un objet mongocxx::instance si un objet a déjà été créé

J'ai créé une classe pour invoquer et tester mongo-cxx-driver et j'ai créé un fichier de type mongocxx::instance dans mon constructeur.

MongoDBHelper::MongoDBHelper()
{
    mongocxx::instance inst{};
}

Le problème est que lorsque j'init la deuxième instance de mon objet classe, il s'avère :

cannot create a mongocxx::instance object if one has already been created

ce serait un peu étrange si je mettais mongocxx::instance dans la portée globale ou utiliser std::call_once . Comment puis-je le réparer ?

3voto

Martin Morterol Points 1808

De : http://mongocxx.org/api/current/classmongocxx_1_1instance.html

Classe représentant une instance du pilote MongoDB.

Le constructeur et le destructeur initialisent et arrêtent le pilote, respectivement. Par conséquent, une instance doit être créée avant d'utiliser le pilote et doit rester en vie jusqu'à ce que tous les autres objets mongocxx soient détruits. Après l'exécution du destructeur d'instance, le pilote ne peut plus être utilisé.

Une seule instance doit être créée dans un programme donné. Ne pas construire d'instance ou construire plus d'une instance dans un programme sont des erreurs, même si les multiples instances ont des durées de vie qui ne se chevauchent pas.

Il semble que vous ne pouvez pas avoir 2 instances, mais peut-être pouvez-vous en créer/détruire une puis en recréer/détruire une autre.

D'où vient votre première instance ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X