Passando unique_ptr como parametro para os métodos Qt
-
Estou fazendo uso de unique_ptr no código, porém quando tento passar esse ponteiro para um método do Qt o complilator reclama sobre conversão e não reconhece o método chamado passando um unique_ptr
exemplo:
@ unique_ptr<QUiLoader> loader ( new QUiLoader());
unique_ptr<QFile> ui_file (new QFile("Forms/MainWindow.ui"));return loader->load(ui_file, parent);@
erro
@error: no matching function for call to ‘QUiLoader::load(std::unique_ptr<QFile>&, QWidget*&)’
return loader->load(ui_file, parent);
note: no known conversion for argument 1 from ‘std::unique_ptr<QFile>’ to ‘QIODevice*’
@ -
a solução é o método get() de unique_ptr
@
ui_file->open(QFile::ReadOnly);
return loader.get()->load(ui_file.get(), parent);@unique_ptr não é o ponteiro propriamente dito, é um conteiner que armazena um ponteiro.