Pregunta

Actualmente tengo algo como esto:

QSharedPointer<t> Qsharedfoo;

Ahora tengo un puntero sin formato a foo, también llamado rawfoo.¿Cómo puedo hacer que foo point sea dueño del puntero sin formato y comience a señalarlo?Sé que en impulso con sugerencias compartidas podríamos usar boost::make_shared¿Cómo lo hacemos con QSharedPointer ?

Quiero hacer algo como esto:

Qsharedfoo = rawfoo
¿Fue útil?

Solución

¿Cómo puedo hacer que Foo Point sea propio del puntero crudo y comience a apuntarle?Sé que en Boost con los punteros compartidos podríamos usar BOOST :: make_shared ¿Cómo lo hacemos con QSharedpointer?

No puedes, desafortunadamente.

  • Usted siempre tendrá que pasar por el constructor a diferencia de Make_Shared.

  • No es necesariamente una excepción segura.

En resumen, deberías pasar por el constructor y Operador= de la siguiente manera:

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

O si ya tiene una referencia a un puntero, use el Método de reinicio () de la siguiente manera:

Qsharedfoo.reset(rawFoo);

Pero como se mencionó en el principio, estas no son operaciones iguales a lo que está buscando.

Otros consejos

directamente desde la Documentación QT , tenemos algo comoesto:

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

Básicamente puedes pasar tu puntero de la misma manera:

// Here I assume that T is the class you're using for Qsharedfoo.
QSharedPointer<T> Qsharedfoo = QSharedPointer<T>(rawfoo);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top