【发布时间】:2009-06-11 13:31:02
【问题描述】:
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?
如果你不知道从哪里开始或需要专业化什么,那么我可以自己做。
【问题讨论】:
-
您使用的是什么版本的 Qt? 4.5 版中记录的 QPointer 类没有 get 方法。从它的外观你想要的语法应该可以工作......
-
Sorry get 是 lambda/shared_ptr,对于 QPointer 它是 data
-
模板参数推导意味着 QPointer
参数的类型推导为 QPointer ,即使它们有一个运算符 T*() const。
标签: c++ qt boost-bind qpointer