raii

    0

    1答えて

    を失敗し、ここでは class file_ptr { public: file_ptr(const wstring& _FileN, const wstring& _OpenMode) : file_n(_FileN), omode(_OpenMode), fptr(_wfopen(file_n.c_str(), omode.c_str())) {

    1

    1答えて

    私はSQLiteデータベースで動作するC++ソフトウェアをいくつか書いています。 私は、潜在的な分岐とエラーの可能性が高い私のコードのセクションが1つあります。私のトランザクションが常にコミットまたはロールバックされることを保証することができません。 "取引が進行中の場合は、ロールバックしてください"と言う方法があるかどうかは不思議でした。あるいは、トランザクションが有効かどうかを判断するためのテ

    1

    2答えて

    には、以下の私が持っているとしましょう: struct Foo { Foo() : bar([&]{ doSomething();}) std::function<void(void)> bar; void doSomething(){}; } を、別のスレッドはFooのインスタンスを破棄しながら、一つのスレッドが常にFooのインスタンスのバー部材を呼び出して

    1

    1答えて

    私はクラスのコンストラクタとデコンストラクタを利用して、RAIIのイディオムを使ってログファイルのスコープを表現し、フォーマットしています。単一の#defineを使用すると、 "{"が出力され、次のログ出力行がインデントレベルで出力されるようにグローバルインデントレベルが増加します。 LogScopeRAIIは、「}」を印刷し、Foo()の末尾に範囲外になると、自然なインデントレベルを自然に下げる

    0

    1答えて

    バックグラウンドスレッドを開始できるベースクラスがあり、必要なときに停止します。そのスレッドは、2つの仮想メソッドOpen()とClose()を呼び出します。したがって、継承されたすべてのクラスはこのメソッドを再実装できますが、スレッドルーチンを開始/停止することはできません(例よりも難しい)。私は基本クラスのコンストラクタ/デストラクタでスレッドを開始/停止するRAIIの原則に従いたいと思います

    -1

    1答えて

    私が理解するように、デフォルトですべてのフィールドメンバーに伝播する特別な関数がいくつかあります。 : - コピー代入は、コンストラクタ、移動の割り当てをコピーするなど、コンストラクタ、デストラクタを、移動 class B{}; class C{B b;}; C c1; C c2; c1=c2; //<-- automatic invoke B::operator=() それは、このよ

    1

    3答えて

    私が思うに、Catは値を返すのが実際にはstd::unique_ptr<Cat>を返すことと、メモリ管理と使用の点で違いますそれらは実際には。 メモリ管理は賢明ですが、それらは同じではありませんか?値オブジェクトによって返されたオブジェクトと、unique_ptrでラップされたオブジェクトの両方が、一度スコープ外に出ると、デストラクタがトリガされます。 だから、どのようにコードの両方の部分を比較し

    7

    3答えて

    ある種の呼び出し可能なオブジェクトのコレクションをラップするクラスfooがあるとします。 fooには、コレクションを反復して各関数オブジェクトを呼び出すメンバー関数run()があります。 fooには、コレクションから呼び出し可能オブジェクトを削除するメンバーremove(...)もあります。 あなたはfoo.run()とfoo.run() への呼び出しによって駆動された削除し、ガードのデストラクタ

    0

    1答えて

    、私はいくつかのテストを行った: (以下を複製することは必要である含まれます) #include <cstdlib> #include <memory> 私はmain機能でstd::unique_ptrで、std::exitと呼ばれる機能を作りました。 void some_function() { std::exit(EXIT_SUCCESS); } int main()