我有一个class MyClass
应该能够返回这个包裹在QSharedPointer<MyClass>
.
根据我的理解(和经验),简单地创建新的实例QSharedPointer<MyClass>(this)
并不是要走的路。相反,完成我想要的正确方法是让MyClass
继承QEnableSharedFromThis<MyClass>
提供成员函数sharedFromThis()
。
这个成员函数应该返回this Wrapped inQSharedPointer<MyClass>
而不会出现所有不好的副作用。
class MyClass : public QEnableSharedFromThis<MyClass>
{
/* ... */
public:
void testSharedThis()
{
auto sp=QEnableSharedFromThis<MyClass>::sharedFromThis();
if(sp.isNull()){
qWarning()<<"SHARED POINTER TO *this* WAS NULL!";
}
}
};
void main(){
MyClass *mc=new MyClass;
mc->testSharedThis();
}
但是,当我testSharedThis()
在上面的示例中运行时,sharedFromThis()
总是返回nullptr而不是这个包裹在QSharedPointer<MyClass>
.
我是新手QEnableSharedFromThis
,我想知道我是否缺少某些东西,或者可能是什么原因造成的?