Boost ';促进共享的ptr和x27;和';增压锁';一起=搞砸了

Boost ';促进共享的ptr和x27;和';增压锁';一起=搞砸了,boost,locking,shared-ptr,boost-thread,Boost,Locking,Shared Ptr,Boost Thread,我对共享ptr和互斥(boost或not boost)这两个概念都不熟悉。我尝试在课堂上使用它: 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 construc

我对共享ptr和互斥(boost或not boost)这两个概念都不熟悉。我尝试在课堂上使用它:

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;
}
typedef boost::共享互斥锁;
typedef boost::unique_lockWriteLock;
typedef boost::shared_lockReadLock;
类订阅信息
{
公众:
//这不是一个可复制的类,所以我必须使用共享指针
boost::共享\u ptr myLock;
...
}
...
std::vector和subscriptionInfo::getIncoming(){
读锁锁(myLock);
返回输入;
}
错误是这样的:

error: no matching function for call to ‘boost::shared_lock<boost::shared_mutex>::shared_lock(boost::shared_ptr<boost::shared_mutex>&)’
错误:调用“boost::shared_lock::shared_lock(boost::shared_ptr&)”时没有匹配的函数
如果你能帮我找出我把事情搞砸了以及如何解决,我将不胜感激。
谢谢

myLock成员是一个指针。一个聪明的,但在任何情况下都是指针。
shared\u lock
构造函数接受对互斥对象的引用,而不是指针。这就是发生错误消息的原因。要解决此问题,必须将指针取消引用为
ReadLock Lock(*myLock)