Есть ли специализация QPointer для boost::bind
boost::bind
ручки boost::shared_ptr
так же, как сырые указатели.
QObject * object(new QObject);
boost::shared_ptr<QObject> sharedObject(new QObject);
bind(&QObject::setObjectName, object, _1)( "name" );
bind(&QObject::setObjectName, sharedObject, _1)( "name" );
Я хотел бы иметь boost::bind
это обрабатывает QPointers
как указатель необработанных указателей.
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" );
Есть ли кто-нибудь, кто сделал специализацию для QPointer
?
Если нет, вы знаете, с чего начать или что нужно специализировать, так что я могу сделать это сам.
1 ответ
Решение
Добавление этой перегрузки get_pointer
Функция должна сделать свое дело:
namespace boost {
template<typename T> T * get_pointer(QPointer<T> const& p)
{
return p;
}
}