[英]error: use of deleted function boost::shared_mutex::shared_mutex
这真的很奇怪。 首先,我不知道您可以删除函数,其次,这是在外部库中发生的。
错误的情况是我正在使用QtCreator来构建项目并一起进行增强,而没有任何静态库。
使用的编译器是gcc
myprogram.h:4:7: error: use of deleted function 'boost::shared_mutex::shared_mutex(const boost::shared_mutex&)'
In file included from ../libs/boost155/boost/thread/lock_guard.hpp:11:0,
from ../libs/boost155/boost/thread/pthread/thread_data.hpp:11,
from ../libs/boost155/boost/thread/thread_only.hpp:17,
from ../libs/boost155/boost/thread/thread.hpp:12,
from ../libs/boost155/boost/thread.hpp:13,
from myprogram.h:2,
from myprogram.cpp:1:
您正在尝试复制互斥锁。 这是不可能的。
您是通过以下方式触发的
from myprogram.h:2,
from myprogram.cpp:1:
因此,这就是您的代码 。 可能的是,如果您的代码中没有明确指出它,则您将shared_mutex
作为类的成员,并且该类将被复制,成为代码其余部分的一部分。
例如:
struct MyClass {
boost::shared_mutex sm;
};
std::vector<MyClass> v;
// etc.
vector
将在许多操作中复制并移动其元素,这将触发互斥体复制。
对于背景:
首先,我不知道您可以删除函数
C ++ 11允许:
struct noncopyable
{
noncopyable(const noncopyable&) =delete;
noncopyable& operator=(const noncopyable&) =delete;
};
另一个类似的功能是标记为默认( =default
)的函数。 关于MSDN的关于已删除和默认功能的好文章: 单击 。
其次,这发生在外部库中。
您尝试从该库复制shared_mutex
这是不可能的。 考虑一下-“互斥复制”代表什么?
可能您有一些代码引入了复制-您是否将一些包含互斥对象的对象存储在std::
容器中?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.