如果已经创建了mongocxx :: instance对象,则无法创建

时间:2019-03-27 05:21:33

标签: c++ mongodb

我制作了一个类来调用和测试mongo-cxx-driver,并在构造函数中创建了一个mongocxx::instance

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

问题是当我初始化类对象的第二个实例时,结果是:

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

如果我将mongocxx::instance放在全局范围内或使用std::call_once,这会有些奇怪。我该如何解决?

1 个答案:

答案 0 :(得分:3)

来自:http://mongocxx.org/api/current/classmongocxx_1_1instance.html

  

代表MongoDB驱动程序实例的类。

     

构造函数和析构函数分别初始化和关闭驱动程序。因此,必须在使用驱动程序之前创建一个实例,并且该实例必须保持活动状态,直到销毁所有其他mongocxx对象。实例析构函数运行后,可能无法使用驱动程序。

     

必须在给定程序中创建一个实例。即使多个实例具有不重叠的生命周期,也不能在一个程序中构造一个实例或构造一个以上的实例是错误的。

似乎您不能有2个实例,但是也许您可以创建/销毁一个实例,然后重新创建/销毁另一个实例。

您的初审来自哪里?