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

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

报错

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

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

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

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

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

原因

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

const int lineIndex;

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

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

你可能感兴趣的:(C++报错 error: copy assignment operator is implicitly deleted 拷贝赋值操作符被删除)