boost::bind
обрабатывает boost::shared_ptr
так же, как и исходные указатели.Есть ли специализация QPointer для boost :: bind
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
?
Если вы не знаете, с чего начать или что нужно, чтобы специализироваться, я могу сделать это сам.
Какую версию Qt вы используете? Документированный класс QPointer в версии 4.5 не имеет метода get. По его мнению, ваш желаемый синтаксис должен работать ... –
Простите, что для lambda/shared_ptr, для QPointer это данные – TimW
Шаблон Аргумент Дедукция означает, что аргументы QPointer имеют их тип, выведенный как QPointer , даже если у них есть оператор T *() const. –
MSalters