Присоединение сигналов и слотов к объекту внутри QSharedPointer
Мое приложение содержало несколько таких функций:
void SomeClass::set_data_provider(DataProvider *data_provider)
{
connect(data_provider, SIGNAL(data_available(int)),
this, SLOT(data_available(int)));
}
Чтобы избежать передачи необработанных указателей, я изменил все вхожденияDataProvider *
вQSharedPointer<DataProvider>
, Последний является почти заменой первого, за исключением того, что вы не можете передать QSharedPointerQObject::connect
, Я работал над этим, извлекая необработанный указатель из QSharedPointer:
void SomeClass::set_data_provider(QSharedPointer<DataProvider> data_provider)
{
connect(data_provider.data(), SIGNAL(data_available(int)),
this, SLOT(data_available(int)));
}
Кажется, это работает нормально, но выглядит не элегантно, и я опасаюсь обращаться к необработанному указателю, как это. Есть ли лучший способ подключения к объекту, который передается в QSharedPointer?