Pergunta

Eu, atualmente, tem algo parecido com isso:

QSharedPointer<t> Qsharedfoo;

Agora eu tenho um ponteiro raw foo assim chamado rawfoo.Como posso fazer foo ponto próprias matérias ponteiro e começar a apontar para ele.Eu sei que em impulso com a partilha de ponteiros podemos usar boost::make_shared como vamos fazer isso com QSharedPointer ?

Eu quero fazer algo parecido com isso:

Qsharedfoo = rawfoo
Foi útil?

Solução

Como posso fazer foo ponto próprias matérias ponteiro e começar a apontar para ele.Eu sei que em impulso com a partilha de ponteiros podemos usar o boost::make_shared como vamos fazer isso com QSharedPointer ?

Não é possível, infelizmente.

  • Você sempre precisa ir através do construtor ao contrário make_shared.

  • Ele não é necessariamente exceção de segurança.

Em resumo, você precisa ir através do construtor e o operador= como segue:

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

ou se você já tiver uma referência a um ponteiro e, em seguida, usar o reset() método como segue:

Qsharedfoo.reset(rawFoo);

Mas como mencionei no início, estes não são iguais operações para o que você está procurando.

Outras dicas

Direto da Qt documentação, temos algo parecido com isto:

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

Basicamente, você pode passar o ponteiro da mesma forma:

// Here I assume that T is the class you're using for Qsharedfoo.
QSharedPointer<T> Qsharedfoo = QSharedPointer<T>(rawfoo);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top