QEnableSharedFromThis Class
template <typename T> class QEnableSharedFromThisEine Basisklasse, die es ermöglicht, eine QSharedPointer für ein Objekt zu erhalten, das bereits durch einen gemeinsamen Zeiger verwaltet wird. Mehr...
Kopfzeile: | #include <QEnableSharedFromThis> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Öffentliche Funktionen
QSharedPointer<T> | sharedFromThis() |
QSharedPointer<const T> | sharedFromThis() const |
Detaillierte Beschreibung
Sie können diese Klasse erben, wenn Sie eine QSharedPointer aus einer beliebigen Instanz einer Klasse erstellen müssen, z.B. aus dem Objekt selbst. Der springende Punkt ist, dass die Technik, einfach QSharedPointer<T>(this) zurückzugeben, nicht verwendet werden kann, da dies dazu führt, dass mehrere verschiedene QSharedPointer Objekte mit unterschiedlichen Referenzzahlen erstellt werden. Aus diesem Grund dürfen Sie niemals mehr als ein QSharedPointer aus demselben Rohzeiger erzeugen.
QEnableSharedFromThis definiert zwei Memberfunktionen namens sharedFromThis(), die ein QSharedPointer<T> und QSharedPointer<const T>, abhängig von der Konstanten, an this
zurückgeben:
class Y: public QEnableSharedFromThis<Y> { public: QSharedPointer<Y> f() { return sharedFromThis(); } }; int main() { QSharedPointer<Y> p(new Y()); QSharedPointer<Y> y = p->f(); Q_ASSERT(p == y); // p and q must share ownership }
Es ist auch möglich, einen gemeinsamen Zeiger von einem Objekt außerhalb der Klasse selbst zu erhalten. Dies ist besonders nützlich in Code, der eine Schnittstelle zu Skripten bietet, wo es derzeit nicht möglich ist, gemeinsame Zeiger zu verwenden. Zum Beispiel:
class ScriptInterface : public QObject { Q_OBJECT // ... public slots: void slotCalledByScript(Y *managedBySharedPointer) { QSharedPointer<Y> yPtr = managedBySharedPointer->sharedFromThis(); // Some other code unrelated to scripts that expects a QSharedPointer<Y> ... } };
Member Function Dokumentation
QSharedPointer<T> QEnableSharedFromThis::sharedFromThis()
Wenn this
(d.h. die Instanz der Unterklasse, die diese Methode aufruft) von einer QSharedPointer verwaltet wird, gibt sie eine gemeinsame Zeigerinstanz zurück, die auf this
zeigt; andernfalls gibt sie eine Null QSharedPointer zurück.
QSharedPointer<const T> QEnableSharedFromThis::sharedFromThis() const
Dies ist eine überladene Funktion.
Konst. Überladung von sharedFromThis().
© 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.