QScopeGuard Class
template <typename F> class QScopeGuardスコープの最後で関数を呼び出すためのスコープガードを提供します。詳細...
Header: | #include <QScopeGuard> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
パブリック関数
QScopeGuard(F &&f) | |
QScopeGuard(const F &f) | |
void | dismiss() |
関連する非メンバー
QScopeGuard<typename std::decay<F>::type> | qScopeGuard(F &&f) |
詳細説明
QScopeGuard<F> は、デストラクタで関数f を実行することだけを目的としたクラスです。これは、関数が正常に終了した場合でも、return文によって早期に終了した場合でも、例外によって終了した場合でも、クリーンアップ・コードが実行されることを保証するのに便利です。
注意: 例外はサポートされていません。callable は、実行時、コピー時、移動時に throw してはいけません。
QScopedValueRollbackも参照してください 。
メンバ関数のドキュメント
[explicit noexcept]
QScopeGuard::QScopeGuard(F &&f)
[explicit noexcept]
QScopeGuard::QScopeGuard(const F &f)
スコープの最後にf を実行するスコープガードを作成する。
Fがラムダの場合、その型を記述することはできません。その場合は、クラス・テンプレート引数控除(C++17 の機能)に頼ってテンプレート・パラメータを完全に省略するか、このコンストラクタの代わりにヘルパー関数qScopeGuard() を使用する必要があります。
[noexcept]
void QScopeGuard::dismiss()
スコープ・ガードを解除して、関数Fがスコープの最後で呼び出されないようにします。
関連する非メンバー
template <typename F> QScopeGuard<typename std::decay<F>::type> qScopeGuard(F &&f)
qScopeGuard 関数を使用すると、スコープの最後で関数を呼び出すことができます。
スコープの最後でf を実行するスコープガードを作成します。
このヘルパー関数は、呼び出し可能な型のテンプレート・パラメータに名前をつけなくても、QScopeGuard を簡単に構築できるように提供されています。Fがラムダの場合、その型を書くことができないので、このヘルパーかクラスのテンプレート引数の推論に頼る必要があります。
使用例を以下に示します:
void myComplexCodeWithMultipleReturnPoints(int v) { // The lambda will be executed right before your function returns auto cleanup = qScopeGuard([] { code you want executed goes HERE; }); if (v == -1) return; int v2 = code_that_might_throw_exceptions(); if (v2 == -1) return; (...) }
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。