Ich habe eine class MyClass
, die in QSharedPointer<MyClass>
verpackt zurückgeben kann.QEnableSharedFromThis :: sharedFromThis() liefert nullptr
Es ist mein Verständnis (und Erfahrung), dass einfach neue Instanzen von QSharedPointer<MyClass>(this)
ist nicht der Weg zu gehen. Stattdessen ist der korrekte Weg, um zu erreichen, was ich will, MyClass
erben von QEnableSharedFromThis<MyClass>
, um die Mitgliedsfunktion sharedFromThis()
zur Verfügung zu stellen.
Diese Elementfunktion sollte dieses in QSharedPointer<MyClass>
ohne alle die negativen Nebenwirkungen zurückgegeben werden, die andernfalls auftreten würden.
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();
}
Jedoch, wenn ich testSharedThis()
im Beispiel oben ausgeführt, gibt sharedFromThis()
immer nullptr statt dies in QSharedPointer<MyClass>
gewickelten.
Ich bin neu zu QEnableSharedFromThis
und ich frage mich, ob es etwas gibt, das ich vermisse, oder was könnte die Ursache dafür sein?