std::mutex 引起的 C2280 尝试引用已删除的函数
起因是把之前写的类中的 mutex 使用了(之前注释掉了没用到这个变量);
或者说添加了一个 mutex 变量, 然后 这个类有嵌套在了 其类的 map 中使用, 然后 编译 就报错
`
C2280 XXX:XXX(const XXX &) 尝试引用已删除的函数
C2280 XXX::operator=(const XXX &) 尝试引用已删除的函数
`
手动添加 这俩函数, 依然包错
死活折腾不起作用, 在网上搜的, 说什么 const 变量啦,析构函数啦.... 等等都无效
后来, 折腾的没办法, 重新 check 上个版本的 工程( 嗯, 幸好有svn )
然后 一点一点 添加变化, 添加一点 编译一次,添加一点 编译一次
终于发现, TMD 是添加 了 mutex 变量后 就报错的
然后网上 搜了下, 直接给了解释:
`
由于std::mutex的拷贝构造函数被禁了:
mutex( const mutex& ) = delete;
`
麻蛋!~
而 std::vector 和 std::map 都是要求 类型 必须包含拷贝构造函数的,所以就报错了。
且 即时 添加 mutable 关键字,也无效的.
最简单的方法就是 :
把 std::mutex _mutex ;改成 std::shared_ptr<std::mutex> _mutex 就可以了
使用的时候
std::lock_guard<std::mutex> _lock{ *_mutex }; // `*`解释得到
或者自己手动 这两个函数吧....
看情况, 如果担心 多线程 是什么莫名其妙的锁了, 就手动 咯, 虽然说写的
std::mutex 引起的 C2280 尝试引用已删除的函数的更多相关文章
- error C2280: 尝试引用已删除的函数
#include<unordered_map> struct SceneData { unordered_map<CString, CString> mConversation ...
- 错误 C2280 Union : 尝试引用已删除的函数 以及 警告 C4624 “Grade”: 已将析构函数隐式定义为“已删除”的一种解决方法
Union 是C/C++语言中的一种结构类型,用于定义可共享内存的数据变量的一种方式,初次使用Union联合体时可能会遇到以下问题: 错误 C2280 Union : 尝试引用已删除的函数 警告 C4 ...
- C++Error2208:...尝试引用已删除的函数
C++Error2208:…尝试引用已删除的函数在使用自己编写的类实例化c++stl容器vector时,调用了vector.erase()方法,结果编译器报了以下错误 错误 C2280 “(类名):: ...
- 错误C2280 Union:尝试引用已删除的函数
在编写Union共用体类型的时候,写了如下代码,在第5行出现错误: #include <iostream> #include <string> using namespace ...
- 【C/C++开发】C++11 并发指南三(std::mutex 详解)
本系列文章主要介绍 C++11 并发编程,计划分为 9 章介绍 C++11 的并发和多线程编程,分别如下: C++11 并发指南一(C++11 多线程初探)(本章计划 1-2 篇,已完成 1 篇) C ...
- C++11 并发指南三(std::mutex 详解)
上一篇<C++11 并发指南二(std::thread 详解)>中主要讲到了 std::thread 的一些用法,并给出了两个小例子,本文将介绍 std::mutex 的用法. Mutex ...
- C++11并发——多线程std::mutex (二)
https://www.cnblogs.com/haippy/p/3237213.html Mutex 又称互斥量,C++ 11中与 Mutex 相关的类(包括锁类型)和函数都声明在 <mute ...
- std::mutex
构造函数,std::mutex不允许拷贝构造,也不允许 move 拷贝,最初产生的 mutex 对象是处于 unlocked 状态的. lock(),调用线程将锁住该互斥量.线程调用该函数会发生下面 ...
- C++11 并发指南三(std::mutex 详解)(转)
转自:http://www.cnblogs.com/haippy/p/3237213.html 上一篇<C++11 并发指南二(std::thread 详解)>中主要讲到了 std::th ...
随机推荐
- lydsy个人代码.zip
/s/12vaj9vUNLMlEPxlhw4xRwA ryap 感谢@yirannn 省选前++rp
- RK3288 查看时钟树
主控端可以通过指令查看时钟树,enable_cnt为1,表示时钟已使能. # cat d/clk/clk_summary cat d/clk/clk_summary clock enable_cnt ...
- MOSS 2013研究系列---隐藏Ribbon
我们在开发Sharepoint 2013 的时候,常常需要隐藏Ribbon,那个Ribbon是属于Office的特征,但是我们做门户的时候,大家都不希望看见到它,但是我们又离不开它,以管理的身份进行设 ...
- java根据特定密钥对字符串进行加解密
package com.test; import java.io.IOException; import java.security.SecureRandom; import javax.crypto ...
- 简单的SOCKET例子
定义实例socket.socket(),如果括号里不写参数,默认为IPV4+TCP 我们猜测客户端的完整代码如下: 同样我们猜测服务端的代码如下: 实际上运行客户端代码: 说明在py3里,网络编程发送 ...
- 使用exe4j把java程序生成可执行的.exe文件
exe4j可以很容易把一个jar打成exe. 下载地址:http://dl.dbank.com/c0owlopqf8 1.下载的安装文件,里面包含一个注册码生成的工具 2.安装exe4j以及破解(注 ...
- Linux USB 摄像头驱动
在 cortex-a8 中,可接入摄像头的接口通常可以分为两种, CAMERA 接口和 USB 接口的摄像头.这一章主要是介绍 USB 摄像头的设备驱动程序.在我们印象中,驱动程序都是一个萝卜一个坑, ...
- gil基本介绍
一 引子 定义: In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native t ...
- UVA-11292Dragon of Loowater
/* The Dragon of Loowater Once upon a time, in the Kingdom of Loowater, a minor nuisance turned into ...
- SCI 美国《科学引文索引》(Science Citation Index, 简称 SCI )
科学引文索引 编辑锁定同义词SCI(科学引文索引)一般指科学引文索引 美国<科学引文索引>(Science Citation Index, 简称 SCI )于1957 年由美国科学信息 ...