QSharedPointer a partir de uma matéria-prima de ponteiro
-
22-12-2019 - |
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
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);