gpt4 book ai didi

c++ - 使用 boost::mutex - 隐式删除错误(因为默认定义格式不正确)

转载 作者:行者123 更新时间:2023-11-30 01:17:57 25 4
gpt4 key购买 nike

我在.h 文件(Header)中有类如下所示

#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 行时,它构建良好。这是怎么回事?

最佳答案

编译器生成的默认复制构造函数默认复制所有数据成员。您使用 boost::mutex 会引发错误,因为互斥量不可复制。

您可以编写自己的复制构造函数,它不会尝试复制互斥锁,也可以简单地删除 MyClass 的复制构造函数。

#include <boost/thread.hpp>

class MyClass{
private:
boost::mutex bPoolMtx_;

// ... other vars
public:
// public vars and methods
MyClass(const MyClass&) = delete;
}

关于c++ - 使用 boost::mutex - 隐式删除错误(因为默认定义格式不正确),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23349524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com