2

boost::bindboost::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ますか?

どこから始めればいいのか、何を専門にする必要があるのか​​わからない場合は、自分でできます。

4

1 に答える 1

5

この関数のオーバーロードを追加すると、get_pointerうまくいくはずです。

namespace boost {
    template<typename T> T * get_pointer(QPointer<T> const& p)
    {
        return p;
    }
}
于 2009-06-11T14:26:47.680 に答える