2013-03-25 4 views
0

저는 shared_ptr과 mutex (boost 또는 boost가 아닌) 개념에 익숙하지 않습니다.'boost shared_ptr'과 'boost lock'은 함께 엉망이되었습니다.

typedef boost::shared_mutex Lock; 
typedef boost::unique_lock<Lock> WriteLock; 
typedef boost::shared_lock<Lock> ReadLock; 

class subscriptionInfo 
{ 
public: 
//this is not a copy constructible class. so I have to use shared pointer 
boost::shared_ptr<Lock> myLock; 
... 
} 
... 
std::vector<DATA_MSG_PTR>& subscriptionInfo::getIncoming() { 
    ReadLock Lock(myLock); 
    return incoming; 
} 

및 오류는 말한다 : 나는 내 수업에서 사용하는 것을 시도하고 당신이 날 내가 엉망 및 그 해결 방법에 무엇을 찾을 수 있도록 경우

error: no matching function for call to ‘boost::shared_lock<boost::shared_mutex>::shared_lock(boost::shared_ptr<boost::shared_mutex>&)’ 

내가 주셔서 감사합니다. 감사합니다.

답변

1

myLock 회원은 포인터입니다. 현명한 하나라도 어떤 경우에는 포인터. shared_lock 생성자는 포인터가 아닌 뮤텍스 개체에 대한 참조를 허용합니다. 이것이 오류 메시지가 나타나는 이유입니다. 문제를 해결하려면 포인터를 참조 해제해야합니다. ReadLock Lock(*myLock);