Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法将参数1从';const boost::共享互斥锁';至';const boost::共享锁定<;互斥锁>&';_C++_Visual Studio 2010_C++11_Boost - Fatal编程技术网

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;