1 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
正如Amedeo所說,你在STL多處用到了Point類,而且該類沒有默認(rèn)合成的構(gòu)造函數(shù),在執(zhí)行遇到需要默認(rèn)實(shí)例化該類時(shí)就會(huì)遇到如上編譯錯(cuò)誤。
你無法保證在定義STL模板類中何時(shí)會(huì)實(shí)例化你的自定義類,所以最好添加一個(gè)默認(rèn)構(gòu)造函數(shù)。
還有注意到,你注釋掉的41行也是存在隱式漏洞的。
其一,你的默認(rèn)構(gòu)造函數(shù)沒有了,默認(rèn)的拷貝函數(shù)和賦值運(yùn)算符重載也不存在。這里你使用了=運(yùn)算符,而該定義確實(shí)不存在。
其二,你的參數(shù)是引用,那么賦值給map鍵值對中的對象的生命周期就移交給了它的定義語句所在作用域,也就是vector<Point>的地方,你的代碼比較簡單沒有復(fù)雜的邏輯關(guān)系,但當(dāng)你的代碼復(fù)雜后,就無法保證map中是否存儲(chǔ)了有效的數(shù)據(jù),很可能已經(jīng)銷毀了的對象。
以上僅為個(gè)人看法,個(gè)人水平有限,可能存在疏漏,只是給你提示一下方向。謝謝
- 1 回答
- 0 關(guān)注
- 802 瀏覽
添加回答
舉報(bào)