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.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.