Frage

Ich habe derzeit so etwas:

QSharedPointer<t> Qsharedfoo;

Jetzt habe ich auch einen rohen Zeiger auf foo genannt rawfoo.Wie kann ich foo point dazu bringen, den rohen Zeiger zu besitzen und darauf zu zeigen.Ich weiß, dass wir im Boost mit gemeinsamen Zeigern verwenden könnten boost::make_shared wie machen wir das mit QSharedPointer ?

Ich möchte so etwas machen:

Qsharedfoo = rawfoo
War es hilfreich?

Lösung

Wie kann ich foo point dazu bringen, den rohen Zeiger zu besitzen und darauf zu zeigen.Ich weiß, dass wir in Boost mit gemeinsam genutzten Zeigern boost :: make_shared verwenden könnten, wie machen wir das mit QSharedPointer?

Das kannst du leider nicht.

  • Im Gegensatz zu make_shared müssen Sie immer den Konstruktor durchlaufen.

  • Es ist nicht unbedingt ausnahmesicher.

Zusammenfassend müssten Sie den Konstruktor durchlaufen und Betreiber= wie folgt:

Qsharedfoo = QSharedPointer<T>(rawfoo); // operator=() overload

oder wenn Sie bereits einen Verweis auf einen Zeiger haben, verwenden Sie die reset() -Methode wie folgt:

Qsharedfoo.reset(rawFoo);

Aber wie eingangs erwähnt, sind dies nicht die gleichen Operationen wie das, wonach Sie suchen.

Andere Tipps

Direkt aus dem Qt-Dokumentation, wir haben so etwas:

QSharedPointer<MyObject> obj = QSharedPointer<MyObject>(new MyObject);

Sie können Ihren Zeiger grundsätzlich auf die gleiche Weise übergeben:

// Here I assume that T is the class you're using for Qsharedfoo.
QSharedPointer<T> Qsharedfoo = QSharedPointer<T>(rawfoo);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top