error: use of deleted function ‘std::atomic<bool>::atomic(const std::atomic<bool>&)’ std::atomic<bool> m_BConnectStutas = false; 为什么报错
时间: 2023-11-09 19:46:27 浏览: 424
这个错误是由于 `std::atomic<bool>` 类型的拷贝构造函数被删除(deleted)导致的。`std::atomic` 类型是为了实现原子操作而设计的,它们通常不支持拷贝和赋值操作,以确保线程安全。相反,你应该使用 `std::atomic<bool>` 的默认构造函数来初始化它。
这样写会解决问题:
```cpp
std::atomic<bool> m_BConnectStatus(false);
```
或者在 C++11 之前的标准中,你可以使用普通的 `bool` 类型变量,并使用 mutex 或其他同步机制来保护它的访问。
如果你需要对 `std::atomic<bool>` 进行拷贝或赋值操作,你可以考虑使用 `std::atomic_ref` 类型,它在 C++20 中引入。这样做可以避免拷贝构造函数被删除的问题。
相关问题
error: use of deleted function ‘std::atomic<bool>::atomic(const std::atomic<bool>&)’ Result(Result&&) = default;
这个错误信息表明在代码中使用了一个被删除的函数std::atomic<bool>::atomic(const std::atomic<bool>&)。这个函数被删除的原因是因为std::atomic是一个原子类型,它的拷贝构造函数是被禁止的,因为原子类型必须是独占所有权的。因此,不能使用拷贝构造函数来创建一个新的std::atomic对象。
如果你想要创建一个新的std::atomic对象,可以使用默认的构造函数或者移动构造函数。如果需要将一个std::atomic对象复制到另一个std::atomic对象,可以使用赋值运算符。
187:76: error: use of deleted function ‘std::atomic<unsigned int>::atomic(const std::atomic<unsigned int>&)’
这个错误是因为尝试复制一个被删除的函数引起的。根据,std::atomic<unsigned int>的拷贝构造函数被删除了,所以不能直接复制该类型的对象。在你提供的引用内容中,并没有提及std::atomic<unsigned int>的相关内容,所以无法给出更具体的解决方案。不过,根据的引用内容,std::atomic是用来封装某个类型的值的,你可以尝试使用其他类型来替代unsigned int,或者使用其他方式来处理该类型。另外,根据的引用内容,你还可以注意到,使用std::atomic时,应该避免直接在定义时进行初始化。由于引用内容中未提供额外信息,所以无法提供更具体的解决方案。
阅读全文