boost::bind の QPointer 特殊化はありますか
-
13-09-2019 - |
質問
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;
}
}
所属していません StackOverflow