C++報(bào)錯(cuò) error: copy assignment operator is implicitly deleted 拷貝賦值操作符被刪除

前兩天在用CLion寫一段C++代碼時(shí)編譯報(bào)錯(cuò),報(bào)錯(cuò)的位置很奇怪,是在STL list中的一個(gè)賦值語(yǔ)句處報(bào)錯(cuò):

報(bào)錯(cuò)

查看報(bào)錯(cuò)信息,發(fā)現(xiàn)原因不在于STL list,而在于一個(gè)自定義的類PointPos

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

PointPos類的對(duì)象不能被賦值,因?yàn)?strong>拷貝操作符被隱式地刪除了

因?yàn)槲业拇a里面使用了列表容器來(lái)放這個(gè)類的對(duì)象,類似list<PointPos>的用法,因此在列表的底層操作中可能會(huì)對(duì)該類的對(duì)象拷貝賦值,又不知道為什么操作符被刪除了,所以賦值失敗報(bào)錯(cuò)。

那么為什么賦值操作符(就是“=”)被隱式刪除了呢?再仔細(xì)看下面的注釋,發(fā)現(xiàn)了原因:

原因

原來(lái)是PointPos類的一個(gè)成員變量被定義成了const常量:

const int lineIndex;

因此編譯器認(rèn)為需要禁止使用拷貝賦值操作符,自動(dòng)把它給刪除了。

簡(jiǎn)單地把成員變量前的const關(guān)鍵字去掉,則編譯不會(huì)再報(bào)錯(cuò)了,問(wèn)題順利解決。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,690評(píng)論 1 51
  • 3. 類設(shè)計(jì)者工具 3.1 拷貝控制 五種函數(shù)拷貝構(gòu)造函數(shù)拷貝賦值運(yùn)算符移動(dòng)構(gòu)造函數(shù)移動(dòng)賦值運(yùn)算符析構(gòu)函數(shù)拷貝和移...
    王偵閱讀 2,080評(píng)論 0 1
  • C++運(yùn)算符重載-下篇 本章內(nèi)容:1. 運(yùn)算符重載的概述2. 重載算術(shù)運(yùn)算符3. 重載按位運(yùn)算符和二元邏輯運(yùn)算符4...
    Haley_2013閱讀 1,542評(píng)論 0 49
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,681評(píng)論 1 32
  • 容器 在實(shí)際的開(kāi)發(fā)過(guò)程中, 數(shù)據(jù)結(jié)構(gòu)本身的重要性不會(huì)遜于操作于數(shù)據(jù)結(jié)構(gòu)的算法的重要性, 當(dāng)程序中存在著對(duì)時(shí)間要求很...
    編程小兔崽閱讀 1,181評(píng)論 0 1

友情鏈接更多精彩內(nèi)容