C++ 无法将参数1从';const boost::共享互斥锁';至';const boost::共享锁定<;互斥锁>&';
我只是想实现。我所做的一切就是复制粘贴代码,这样我的类的内容(简化)如下:C++ 无法将参数1从';const boost::共享互斥锁';至';const boost::共享锁定<;互斥锁>&';,c++,visual-studio-2010,c++11,boost,C++,Visual Studio 2010,C++11,Boost,我只是想实现。我所做的一切就是复制粘贴代码,这样我的类的内容(简化)如下: mymutexclass.h 我得到了一个错误,只针对读取互斥行: error C2664: 'boost::shared_lock<Mutex>::shared_lock(const boost::shared_lock<Mutex> &)' : cannot convert parameter 1 from 'const boost::shared_mutex' to 'const b
mymutexclass.h
我得到了一个错误,只针对读取互斥行:
error C2664: 'boost::shared_lock<Mutex>::shared_lock(const boost::shared_lock<Mutex> &)' : cannot convert parameter 1 from 'const boost::shared_mutex' to 'const boost::shared_lock<Mutex> &' D:\... path ...\mymutexclass.cpp
错误C2664:'boost::shared\u lock::shared\u lock(const boost::shared\u lock&'):无法将参数1从'const boost::shared\u mutex'转换为'const boost::shared\u lock&'D:\。。。路径…\mymutexclass.cpp
我完全迷失在错误中——它抱怨的类型之间有什么区别?我的意思是,从错误来看:
mutable boost::shared_mutex _access;
- 从
const boost::shared_mutex
- 到
const boost::shared\u lock&
我做错了什么?链接的答案被上推了100次,所以我想它很可能是正确的。因为你的方法有一个
常量
签名,你不允许更改互斥锁状态,因此你不允许锁定它。将互斥体更改为mutable
应该可以修复错误:
mutable boost::shared_mutex _access;
“这个链接的答案被提升了100倍,所以我想它很可能是正确的。”不过,它已经快6年了。@SingerOfTheFall是的,我说可能。但无论如何,如果有问题,我们可能需要找到它并解决它,因为它是谷歌上最适合读写互斥解决方案的。事实上,就是这样,请注意这一点。你帮我省了几个小时的麻烦。
mutable boost::shared_mutex _access;