質問

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