سؤال

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?

إذا لم يكن الأمر كذلك، فأنت تعرف أين تبدأ أو ما يجب التخصصي، لذلك يمكنني أن أفعل ذلك بنفسي.

هل كانت مفيدة؟

المحلول

إضافة هذا الزائد من get_pointer وظيفة يجب أن تفعل الخدعة:

namespace boost {
    template<typename T> T * get_pointer(QPointer<T> const& p)
    {
        return p;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top