문제

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