我制作了一个类来调用和测试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
,这会有些奇怪。我该如何解决?
答案 0 :(得分:3)
来自:http://mongocxx.org/api/current/classmongocxx_1_1instance.html
代表MongoDB驱动程序实例的类。
构造函数和析构函数分别初始化和关闭驱动程序。因此,必须在使用驱动程序之前创建一个实例,并且该实例必须保持活动状态,直到销毁所有其他mongocxx对象。实例析构函数运行后,可能无法使用驱动程序。
必须在给定程序中创建一个实例。即使多个实例具有不重叠的生命周期,也不能在一个程序中构造一个实例或构造一个以上的实例是错误的。
似乎您不能有2个实例,但是也许您可以创建/销毁一个实例,然后重新创建/销毁另一个实例。
您的初审来自哪里?