C++Error2208:…尝试引用已删除的函数
在使用自己编写的类实例化c++stl容器vector时,调用了vector.erase()方法,结果编译器报了以下错误

错误 C2280 “(类名)::operator =(const (类名) &)”: 尝试引用已删除的函数 

从错误的内容看,似乎是自己的类的赋值构造函数被尝试调用却发现其已被删除。

在翻阅了资料后发现,erase方法会在将对象删除后,将所有该对象之后的对象向前移动。此时会调用该对象的赋值构造函数。

一般而言,对象的赋值构造函数如果开发者没有提供,则编译器会生成默认的赋值构造函数。然而,默认的赋值构造函数在以下几种情况会被删除。

该类含有非静态的const成员变量
该类含有非静态的reference成员变量
该类含有不能被拷贝的成员变量
该类含有不能被拷贝的基类
该类含有用户定义的移动构造函数或者移动赋值函数
自己编写的类中有const成员变量, 将其改成static 或者去掉const 或者添加赋值构造函数,就可以消除这个error.

C++Error2208:...尝试引用已删除的函数的更多相关文章

  1. 错误 C2280 Union : 尝试引用已删除的函数 以及 警告 C4624 “Grade”: 已将析构函数隐式定义为“已删除”的一种解决方法

    Union 是C/C++语言中的一种结构类型,用于定义可共享内存的数据变量的一种方式,初次使用Union联合体时可能会遇到以下问题: 错误 C2280 Union : 尝试引用已删除的函数 警告 C4 ...

  2. std::mutex 引起的 C2280 尝试引用已删除的函数

    起因是把之前写的类中的 mutex 使用了(之前注释掉了没用到这个变量); 或者说添加了一个 mutex 变量, 然后 这个类有嵌套在了 其类的 map 中使用, 然后 编译 就报错 ` C2280 ...

  3. error C2280: 尝试引用已删除的函数

    #include<unordered_map> struct SceneData { unordered_map<CString, CString> mConversation ...

  4. 错误C2280 Union:尝试引用已删除的函数

    在编写Union共用体类型的时候,写了如下代码,在第5行出现错误: #include <iostream> #include <string> using namespace ...

  5. Oracle恢复已删除数据

    Oracle恢复已删除的数据,主要有两种方法:SCN和时间戳. 一.通过SCN恢复删除且已提交的数据 1.获得当前数据库的scn号 select current_scn from v$database ...

  6. Dynamics 365创建用户提示:您正在尝试使用已由其他用户使用的域登录来创建用户。如何解决。

    摘要: 本人微信公众号:微软动态CRM专家罗勇 ,回复287或者20181128可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me ...

  7. DROP FUNCTION - 删除一个函数

    SYNOPSIS DROP FUNCTION name ( [ type [, ...] ] ) [ CASCADE | RESTRICT ] DESCRIPTION 描述 DROP FUNCTION ...

  8. PHP多重判断删除文件函数

    <?function delete_file($file) {     if (file_exists($file))     {         $delete = chmod ($file, ...

  9. 非常有用!eclipse与myeclipse恢复已删除的文件和代码

     eclipse与myeclipse恢复已删除的文件和代码 今天写了1300多行代码,被不小心删除了顿时感觉手足无措,后来用myeclipse的历史文件恢复功能,找回来了,虚惊一场!!!MyEclip ...

随机推荐

  1. IDEA 启动项目 很慢,总会到某个点进行延迟卡顿。

    最开始的我解决的方式 clean 项目 忙完后,闲暇时间想起这个问题,然后进行 面向百度,发现了问题所在 参考文档:https://www.cnblogs.com/zhangzhonghui/p/11 ...

  2. (二十八)动态盐的MD5加密算法(java实现)

    目录 文章目录 @[toc] 源代码: 函数用法讲解: 用法代码实例: 对比普通 **`MD5`** 的优点 实现思路: 后来我发现,BCryptPasswordEncoder 是这个思路的实现的最优 ...

  3. Escape(多记一个方向状态的BFS)迷宫逃脱

    题意:https://www.nitacm.com/problem_show.php?pid=2266 vis记[x][y][dir]三个状态就行. 引用:https://blog.csdn.net/ ...

  4. 阿里巴巴矢量图标库(iconfont)批量全选的方法

    阿里巴巴矢量图标库: https://www.iconfont.cn/ 浏览器打开调试面板,进入 console 调试面板(Google浏览器快捷键F12)或者在页面空白处,点击右键->审查元素 ...

  5. 怎样监听xhr.readyState值的变化

    可以使用 xhr.onreadystatechange 属性指向的函数去监听 xhr.readyState 值的变化. 示例如下: var xhr = new XMLHttpRequest(); xh ...

  6. hdu 2680 Dijstra

    Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  7. BigDecimal与Long、int之间的相互转换

    //bigDecimal 转换成 Long类型 public static Long bigDecimalToLong(BigDecimal b){ BigDecimal c = new BigDec ...

  8. Lab2 Report

    1.安装SeleniumIDE插件 a)安装Firefox 17.0 - 56.*版本的firefox,下载地址为:http://ftp.mozilla.org/pub/firefox/release ...

  9. impala 建表时报错,不支持中文

    1.错误信息 (1366, "Incorrect string value: '\\xE6\\x8E\\x88\\xE6\\x9D\\x83...' for column 'search' ...

  10. Dart 面向对象 类 方法

    Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类. 面向对象编程(OOP)的三个基本特征是:封装.继承.多态 封装:封装是对象和类概念的主要特性. ...