summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qsharedpointer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/tools/qsharedpointer.cpp')
-rw-r--r--src/corelib/tools/qsharedpointer.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp
index 180f45eb56..e0cd54022e 100644
--- a/src/corelib/tools/qsharedpointer.cpp
+++ b/src/corelib/tools/qsharedpointer.cpp
@@ -374,12 +374,12 @@
/*!
\class QEnableSharedFromThis
\inmodule QtCore
- \brief A base class that allows to obtain a QSharedPointer for an object already managed by a shared pointer
+ \brief A base class that allows obtaining a QSharedPointer for an object already managed by a shared pointer
\since 5.4
You can inherit this class when you need to create a QSharedPointer
- from any instance of a class -- for instance, from within the
- object itself. The key point is that the "obvious" technique of
+ from any instance of a class; for instance, from within the
+ object itself. The key point is that the technique of
just returning QSharedPointer<T>(this) can not be used, because
this winds up creating multiple distinct QSharedPointer objects
with separate reference counts. For this reason you must never
@@ -406,6 +406,27 @@
Q_ASSERT(p == y); // p and q must share ownership
}
\endcode
+
+ It is also possible to get a shared pointer from an object outside of
+ the class itself. This is especially useful in code that provides an
+ interface to scripts, where it is currently not possible to use shared
+ pointers. For example:
+
+ \code
+ 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> ...
+ }
+ };
+ \endcode
*/
/*!