2017-02-13 18 views
0

私はクラスmongocxx :: instanceのオブジェクトをコンストラクタで生成します。C++でMongoDBの現在のインスタンスを取得する方法は?

コンストラクタ:

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

今私は関数の中で、このインスタンスを取得する必要があります。私はこれを試してみました:

機能:ラインmongocxx::instance::current();

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

私のプログラムがクラッシュ。

誰かが私を助けることができますか?

答えて

0

コンストラクタが完了すると、スタック上にあるオブジェクトmongocxx::instanceが破棄されました。他のタイプよりも寿命が長くなるように、instanceのインスタンスを保持する必要があります。

このタイプの使用方法の例については、ソースのinstance management exampleを参照してください。

+0

匿名の名前空間がなければ、このコードは私のために働きます。異なるクラスのオブジェクトとは異なる関数でinstance()メソッドを呼び出します。 Singletonオブジェクトは1回だけ作成されます。しかし、例のように匿名の名前空間を使用すると、コードをコンパイルしようとするとリンクエラーが発生します。 –