java - C++ 編譯器選擇問(wèn)題
問(wèn)題描述
平時(shí)用codeblocks,編譯時(shí)出現(xiàn)這些問(wèn)題,上網(wǎng)查結(jié)果很少,要么跳轉(zhuǎn)要英文網(wǎng)站,請(qǐng)問(wèn)這是因?yàn)檫@款軟件默認(rèn)GCC編譯而提示這樣的錯(cuò)誤(gcc的特定語(yǔ)法?)還是英文導(dǎo)致搜索結(jié)果少(我用百度)
處理這些問(wèn)題老是半天都找不到解決方法。如果前者,我應(yīng)該改大眾一些的IDE,如vc++;如果后者,我應(yīng)該改為中文?
應(yīng)該是前者吧,因?yàn)樗阉鹘Y(jié)果老是看到gcc字眼,如果在cb里設(shè)置為vc++編程是否錯(cuò)誤顯示就是vc類型了呢?
附圖_原錯(cuò)誤代碼
問(wèn)題解答
回答1:作用域中未聲明 n
回答2:函數(shù)模板的相關(guān)聲明結(jié)構(gòu)常見(jiàn)就三種:依次是聲明函數(shù)模板,聲明特化和聲明實(shí)例。
template <class T, ...>void foo();template <>void foo<T1, T2, ...>(); // 除非是特化含參數(shù)包的模板,否則參數(shù)列表不能為空template void foo<T1, T2 ...>(); // 同上
換成操作符重載也一樣
template <class T>std::ostream &operator<<(std::ostream &, Seqlist<T> &);template <>std::ostream &operator<<<int>(std::ostream &, Seqlist<int> &);templatestd::ostream &operator<<<int>(std::ostream &, Seqlist<int> &);
我覺(jué)得你這里不是特化,只是想聲明模板。因?yàn)槟阍诤瘮?shù)形式參數(shù)列表里用了模板形式參數(shù)。參照第一種寫(xiě)法。
如果你不做太多的模板開(kāi)發(fā),其實(shí)stream的<<的重載都是這個(gè)套路,記熟就好。另外一個(gè)常見(jiàn)形式是
template <class CharT, class Traits>std::basic_ostream<CharT, Traits> &operator<<(std::basic_ostream<CharT, Traits> &, ??);
編譯器我覺(jué)得沒(méi)必要換,書(shū)上有的語(yǔ)法看書(shū)學(xué)。要搜也得搜“ostream 重載 寫(xiě)法”之類的,然后比對(duì)代碼。如果是很深的模板用法,拷貝語(yǔ)法錯(cuò)誤提示搜是搜不出個(gè)所以然的。
回答3:編譯器給你的錯(cuò)誤信息很清晰,可能你讀不懂英語(yǔ)吧。不用糾結(jié)選擇那個(gè)編譯器,編譯器是無(wú)辜的,gcc挺好
相關(guān)文章:
1. docker不顯示端口映射呢?2. docker-compose 為何找不到配置文件?3. docker內(nèi)創(chuàng)建jenkins訪問(wèn)另一個(gè)容器下的服務(wù)器問(wèn)題4. css3 - viewport和@media的區(qū)別是什么5. javascript - 請(qǐng)教移動(dòng)端從詳情頁(yè)返回到列表頁(yè)原來(lái)位置的問(wèn)題?6. 如何解決Centos下Docker服務(wù)啟動(dòng)無(wú)響應(yīng),且輸入docker命令無(wú)響應(yīng)?7. 我在centos容器里安裝docker,也就是在容器里安裝容器,報(bào)錯(cuò)了?8. javascript - 微信網(wǎng)頁(yè)開(kāi)發(fā)從菜單進(jìn)入頁(yè)面后,按返回鍵沒(méi)有關(guān)閉瀏覽器而是刷新當(dāng)前頁(yè)面,求解決?9. 老師您的微信號(hào)是多少?10. css3 - css做動(dòng)畫(huà)效果
