QEnableSharedFromThis 类
template <typename T> class QEnableSharedFromThis一个基类,允许从由智能指针管理的对象中获得一个 QSharedPointer。 更多...
头文件 | #include <QEnableSharedFromThis> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
公共函数
QSharedPointer<T> | sharedFromThis() |
QSharedPointer<const T> | sharedFromThis() const |
详细描述
当您需要从一个类的任何实例创建一个 QSharedPointer 时,可以继承这个类;例如,在对象内部。关键点是,直接返回 QSharedPointer<T>(this) 的技术不能使用,因为这会导致创建多个不同的 QSharedPointer 对象,它们各自有独立的引用计数。因此,您绝对不能从同一个原始指针创建多个 QSharedPointer。
QEnableSharedFromThis 定义了两个名为 sharedFromThis() 的成员函数,根据 const 性返回一个 QSharedPointerQSharedPointer<const T>
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 }
从类外部的对象也可以获取智能指针。这在提供脚本接口的代码中特别有用,因为当前无法使用智能指针。例如
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> ... } };
成员函数文档
QSharedPointer<T> QEnableSharedFromThis::sharedFromThis()
如果 this
(即调用此方法的子类实例)正被一个 QSharedPointer 管理,则返回指向 this
的智能指针实例;否则返回一个空 QSharedPointer。
QSharedPointer<const T> QEnableSharedFromThis::sharedFromThis() const
这是一个重载函数。
sharedFromThis() 的 const 重载。
© 2024 Qt 公司版权所有。此处包含的文档贡献的版权归各自所有者所有。此处提供的文档是在自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款下授权的。Qt 及相关商标是芬兰 Qt 公司和/或在其他世界各地的商标。所有其他商标均为各自所有者的财产。