QScopeGuard Class
template <typename F> class QScopeGuardBietet einen Scope Guard für den Aufruf einer Funktion am Ende eines Scopes. Mehr...
Kopfzeile: | #include <QScopeGuard> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Öffentliche Funktionen
QScopeGuard(F &&f) | |
QScopeGuard(const F &f) | |
void | dismiss() |
Verwandte Nicht-Mitglieder
QScopeGuard<typename std::decay<F>::type> | qScopeGuard(F &&f) |
Detaillierte Beschreibung
QScopeGuard<F> ist eine Klasse, deren einziger Zweck es ist, die Funktion f in ihrem Destruktor auszuführen. Dies ist nützlich, um zu garantieren, dass Ihr Aufräumcode ausgeführt wird, unabhängig davon, ob die Funktion normal, vorzeitig durch eine Return-Anweisung oder durch eine Exception beendet wird.
Hinweis: Ausnahmen werden nicht unterstützt. Die Callable sollte nicht auslösen, wenn sie ausgeführt, kopiert oder verschoben wird.
Siehe auch QScopedValueRollback.
Dokumentation der Mitgliedsfunktionen
[explicit noexcept]
QScopeGuard::QScopeGuard(F &&f)
[explicit noexcept]
QScopeGuard::QScopeGuard(const F &f)
Erstellen Sie eine Bereichsüberwachung, die f am Ende des Bereichs ausführen wird.
Wenn F ein Lambda ist, kann sein Typ nicht geschrieben werden. In diesem Fall müssen Sie sich entweder auf die Deduktion von Klassenvorlagenargumenten verlassen (C++17-Funktion) und den Vorlagenparameter vollständig weglassen oder die Hilfsfunktion qScopeGuard() anstelle dieses Konstruktors verwenden.
[noexcept]
void QScopeGuard::dismiss()
Deaktiviert die Bereichsüberwachung, so dass die Funktion F am Ende des Bereichs nicht aufgerufen wird.
Verwandte Nicht-Mitglieder
template <typename F> QScopeGuard<typename std::decay<F>::type> qScopeGuard(F &&f)
Die Funktion qScopeGuard kann verwendet werden, um eine Funktion am Ende des Bereichs aufzurufen.
Erstellen Sie einen Scope Guard, der f am Ende des Scopes ausführt.
Diese Hilfsfunktion wird zur Verfügung gestellt, damit Sie eine QScopeGuard einfach konstruieren können, ohne den Template-Parameter für den Typ der aufrufbaren Funktion benennen zu müssen. Wenn F ein Lambda ist, können Sie seinen Typ nicht schreiben und müssen sich auf diese Hilfsfunktion oder die Ableitung des Klassenvorlagenarguments verlassen.
Ein Beispiel für die Verwendung ist wie folgt:
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; (...) }
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.