我在代码库中广泛使用了std :: mutex。但是,其中一个类只是不允许我在其实例变量列表中添加互斥锁。我使用以下内容非常简单地实例化互斥锁 -
std::mutex myMutex;
我将上述声明添加到班级成员列表的私人部分。
我收到以下错误 -
error C2280: 'std::mutex::mutex(const std::mutex &)' : attempting to reference a deleted function
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\mutex(113) : see declaration of 'std::mutex::mutex'
我试图添加互斥锁的类被复制。
正如我所说的,我在我的代码库中使用了互斥锁,所以我可以在一个地方实例化互斥锁,而我可以在所有其他地方实例化,这是非常奇怪的。你能告诉我这里出了什么问题吗?
答案 0 :(得分:6)
您正在使用复制构造函数向类中添加std::mutex
。最有可能的是,您的类具有正在使用的默认复制构造函数。默认的复制构造函数在类中的每个成员上调用复制构造函数。但是std::mutex
的复制构造函数被删除了,因为它是一个不可复制的类型。