use of deleted function ‘bool std::regex_search(const std::__cxx11::basic_string<_Ch_type, _Ch_traits, _Ch_alloc>&&, std::__cxx11::match_results<typename std::__cxx11::basic_string<_Ch_type, _Ch_traits, _Ch_alloc>::const_iterator, _Alloc>&, const std::__cxx11::basic_regex<_Ch_type, _Rx_traits>&, std::regex_constants::match_flag_type) [with _Ch_traits = std::char_traits<char>; _Ch_alloc = std::allocator<char>; _Alloc = std::allocator<std::__cxx11::sub_match<__gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> > > >; _Ch_type = char; _Rx_traits = std::__cxx11::regex_traits<char>; typename std::__cxx11::basic_string<_Ch_type, _Ch_traits, _Ch_alloc>::const_iterator = __gnu_cxx::__normal_iterator<const char*, std::__cxx11::basic_string<char> >]’ if (std::regex_search(m_splitConfig["Name"].asString(), match, regex))
时间: 2023-09-13 20:10:58 浏览: 393
错误提示表明,您正在尝试使用一个被删除的函数`std::regex_search`,并给它传递了不兼容的参数。
这个错误通常发生在使用C++标准库的正则表达式库时,可能是因为您的编译器或标准库版本不支持某些特定的正则表达式功能或语法。
要解决这个问题,您可以尝试以下几个步骤:
1. 确保您的编译器和标准库版本支持使用`std::regex_search`函数。您可以检查您正在使用的C++版本和标准库文档,确保您的环境满足要求。
2. 检查您的代码中是否有其他地方使用了相同的函数名`std::regex_search`,并且可能存在冲突。确保没有其他函数或定义与此冲突。
3. 如果您的编译器和标准库版本不支持`std::regex_search`,可以尝试使用其他替代方案,例如Boost正则表达式库或其他第三方库,或者手动实现您需要的功能。
请注意,根据您的具体环境和问题,解决方案可能会有所不同。建议查阅相关文档、搜索相关问题,并根据具体情况进行调整和尝试。
相关问题
map 里面使用 unique_ptr 报 error use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&)’
对不起,我之前给出的答案有误。实际上,`std::map` 不支持直接存储 `std::unique_ptr`,因为 `std::unique_ptr` 是独占所有权的智能指针,不能进行复制操作。
如果你需要在 `std::map` 中存储指针类型,可以考虑使用裸指针或者 `std::shared_ptr` 来代替 `std::unique_ptr`。下面是两种可能的解决方案:
1. 使用裸指针:
```cpp
std::map<KeyType, ValueType*> myMap;
```
在这种情况下,你需要手动管理内存的生命周期,并确保在适当的时候释放资源。
2. 使用 `std::shared_ptr`:
```cpp
std::map<KeyType, std::shared_ptr<ValueType>> myMap;
```
`std::shared_ptr` 允许多个指针共享同一个对象的所有权,并在所有指针都释放后自动释放资源。
请根据你的具体需求选择适合的方案,并确保在使用指针时遵守正确的内存管理规则。
error: use of deleted function ‘std::atomic<bool>::atomic(const std::atomic<bool>&)’ std::atomic<bool> m_BConnectStutas = false; 为什么报错
这个错误是由于 `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 中引入。这样做可以避免拷贝构造函数被删除的问题。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![crx](https://img-home.csdnimg.cn/images/20250102104920.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)