/home/admin/Developments/HIK Inspire V2.0/Client/Common/src/writing/module/ty/AbstractReceiver.h:59: error: use of deleted function ‘std::atomic<long long int>::atomic(const std::atomic<long long int>&)’ std::atomic<SwCodeId> m_codeId=0; ^
时间: 2024-02-02 19:02:37 浏览: 31
这个错误提示是因为程序中使用了 `std::atomic` 类型的变量 `m_codeId`,但是 `std::atomic` 类型的对象是不可复制的,编译器在编译时会调用 `std::atomic` 类型的复制构造函数,但是该复制构造函数被删除了,从而导致编译错误。
解决这个问题的方法有两种:
1. 使用 `std::atomic` 类型的移动构造函数来替代复制构造函数。例如:
```
std::atomic<SwCodeId> m_codeId = std::atomic<SwCodeId>(0);
```
2. 使用 `std::atomic` 提供的 `load` 和 `store` 成员函数来对 `m_codeId` 进行读写操作。例如:
```
std::atomic<SwCodeId> m_codeId;
// 写入操作
m_codeId.store(0);
// 读取操作
SwCodeId codeId = m_codeId.load();
```
这两种方法都可以避免调用 `std::atomic` 类型的复制构造函数,从而解决编译错误。
相关问题
/home/admin/Developments/HIK Inspire V2.0/Client/Common/src/writing/module/ty/AbstractReceiver.h:59: error: expected identifier before numeric constant std::atomic<SwCodeId> m_codeId(0); ^
这个错误提示是因为程序中使用了 `std::atomic` 类型的变量 `m_codeId`,但是在定义变量时使用了括号而不是赋值符号。正确的定义方式是使用赋值符号 `=` 来给 `m_codeId` 赋初值,而不是使用括号。例如:
```
std::atomic<SwCodeId> m_codeId = 0;
```
这样可以避免编译器将 `m_codeId(0)` 解释为一个函数调用或其他语法错误,从而消除编译错误。
/home/admin/Developments/HIK Inspire V2.0/Client/Common/src/writing/module/ty/limited_queue.h:40: error: declaration of ‘int n’ shadows template parameter _T& operator[] (int n) ~~~~^
这个编译错误是因为你在模板类中定义了一个名为`n`的变量,这个变量与模板参数`n`同名,造成了命名冲突。在C++中,变量名和模板参数名是在同一个命名空间中的,因此不能使用同名的变量名。
要解决这个问题,您需要将变量`n`的名称更改为不同的名称,以避免与模板参数`n`产生冲突。例如,您可以将变量名称更改为`index`或`pos`等。
示例代码如下:
```cpp
template <typename T, int N>
class limited_queue {
public:
limited_queue() : size_(0) {}
T& operator[](int index) {
return data_[index];
}
void push(const T& t) {
if (size_ < N) {
data_[size_++] = t;
}
}
private:
T data_[N];
int size_;
};
```
在上面的代码中,我们将`operator[]`函数中的变量名称从`n`更改为`index`。这样,就可以避免与模板参数`N`产生冲突,从而消除编译错误。
相关推荐
![particle_swarm_optimization_de](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](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)