我在.h
文件(标题)
#include <boost/thread.hpp>
class MyClass{
private:
boost::mutex bPoolMtx_;
// ... other vars
public:
// public vars and methods
}
尝试构建/编译时出现以下错误。
MyClass.h:38:7: note: ‘MyClass::MyClass(const MyClass&)’ is implicitly deleted because the default definition would be ill-formed:
MyClass.h:38:7: error: use of deleted function ‘boost::mutex::mutex(const boost::mutex&)’
我还没有在cpp文件中使用互斥锁。当我注释掉boost::mutex
行时,它构建得很好。发生了什么事?
答案 0 :(得分:5)
编译器生成的默认复制构造函数默认复制所有数据成员。您对boost::mutex
的使用会引发错误,因为互斥锁不可复制。
您可以编写自己的复制构造函数,不会尝试复制互斥锁,也可以只删除MyClass
的复制构造函数。
#include <boost/thread.hpp>
class MyClass{
private:
boost::mutex bPoolMtx_;
// ... other vars
public:
// public vars and methods
MyClass(const MyClass&) = delete;
}