C++报错 error: copy assignment operator is implicitly deleted 拷贝赋值操作符被删除

189 篇文章 3 订阅
180 篇文章 2 订阅

前两天在用CLion写一段C++代码时编译报错,报错的位置很奇怪,是在STL list中的一个赋值语句处报错:

报错

查看报错信息,发现原因不在于STL list,而在于一个自定义的类PointPos

object of type 'PointPos' cannot be assigned because its copy operator is implicitly deleted

PointPos类的对象不能被赋值,因为拷贝操作符被隐式地删除了

因为我的代码里面使用了列表容器来放这个类的对象,类似list<PointPos>的用法,因此在列表的底层操作中可能会对该类的对象拷贝赋值,又不知道为什么操作符被删除了,所以赋值失败报错。

那么为什么赋值操作符(就是“=”)被隐式删除了呢?再仔细看下面的注释,发现了原因:

原因

原来是PointPos类的一个成员变量被定义成了const常量:

const int lineIndex;

因此编译器认为需要禁止使用拷贝赋值操作符,自动把它给删除了。

简单地把成员变量前的const关键字去掉,则编译不会再报错了,问题顺利解决。


 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值