Adjuntar señales y ranuras a un objeto dentro de un QSharedPointer
Mi aplicación contenía varias funciones como esta:
void SomeClass::set_data_provider(DataProvider *data_provider)
{
connect(data_provider, SIGNAL(data_available(int)),
this, SLOT(data_available(int)));
}
Para evitar pasar punteros crudos, he cambiado todas las apariciones deDataProvider *
aQSharedPointer<DataProvider>
. Este último es casi un reemplazo directo para el primero, excepto que no puede pasar un QSharedPointer aQObject::connect
. Trabajé alrededor de esto extrayendo un puntero sin procesar del QSharedPointer:
void SomeClass::set_data_provider(QSharedPointer<DataProvider> data_provider)
{
connect(data_provider.data(), SIGNAL(data_available(int)),
this, SLOT(data_available(int)));
}
Esto parece funcionar bien, pero parece poco elegante y desconfío de acceder al puntero sin formato de esta manera. ¿Hay una mejor manera de conectarse a un objeto que se pasa en un QSharedPointer?