第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

C++ STL - unordered_map

C++ STL - unordered_map

C++
SMILET 2018-08-08 09:09:47
IDE:vs201541行代碼注釋后的的輸出: 取消注釋41行后:編譯器報(bào)錯(cuò):   錯(cuò)誤 C2512 “Point::Point”: 沒有合適的默認(rèn)構(gòu)造函數(shù)可用 TEST1 d:\program files (x86)\microsoft visual studio 14.0\vc\include\tuple 1180 請問該怎么改? 另外,個(gè)人覺得 函數(shù) dosomething() 中的 else情形是多余的?不知道為什么,看到某底層代碼有else,搞不懂,來個(gè)大神解釋一波哈?
查看完整描述

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è)人水平有限,可能存在疏漏,只是給你提示一下方向。謝謝


查看完整回答
反對 回復(fù) 2018-09-07
  • 1 回答
  • 0 關(guān)注
  • 802 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)