【问题标题】:'boost shared_ptr' and 'boost lock' together = messed up'boost shared_ptr' 和 'boost lock' 一起 = 搞砸了
【发布时间】:2013-03-14 19:41:21
【问题描述】:

我对 shared_ptr 和 mutex(增强或不增强)这两个概念都很陌生。我正在尝试在我的课程中使用它:

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>&)’

如果你能帮我找出我搞砸的地方以及如何解决它,我将不胜感激。 谢谢

【问题讨论】:

    标签: boost locking shared-ptr boost-thread


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 2013-04-16
      • 1970-01-01
      相关资源
      最近更新 更多