Existe uma especialização do QPointer para Boost :: bind
-
13-09-2019 - |
Pergunta
boost::bind
alças boost::shared_ptr
Da mesma maneira que os ponteiros crus.
QObject * object(new QObject);
boost::shared_ptr<QObject> sharedObject(new QObject);
bind(&QObject::setObjectName, object, _1)( "name" );
bind(&QObject::setObjectName, sharedObject, _1)( "name" );
Eu adoraria ter um boost::bind
Isso lida QPointers
como ponteiros crus ponteiro.
QPointer<QObject> guardedObject(new QObject);
// i want to write it like this
bind(&QObject::setObjectName, guardedObject, _1)( "name" );
//now i have to do it like this
bind(&QObject::setObjectName, bind(&QPointer<QObject>::data, guardedObject), _1)( "name" );
Há alguém que fez a especialização para QPointer
?
Caso contrário, você sabe por onde começar ou o que precisa ser especializado, para que eu possa fazer isso sozinho.
Solução
Adicionando esta sobrecarga do get_pointer
A função deve fazer o truque:
namespace boost {
template<typename T> T * get_pointer(QPointer<T> const& p)
{
return p;
}
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow