java - C++ 編譯器選擇問題
問題描述
平時用codeblocks,編譯時出現這些問題,上網查結果很少,要么跳轉要英文網站,請問這是因為這款軟件默認GCC編譯而提示這樣的錯誤(gcc的特定語法?)還是英文導致搜索結果少(我用百度)
處理這些問題老是半天都找不到解決方法。如果前者,我應該改大眾一些的IDE,如vc++;如果后者,我應該改為中文?
應該是前者吧,因為搜索結果老是看到gcc字眼,如果在cb里設置為vc++編程是否錯誤顯示就是vc類型了呢?
附圖_原錯誤代碼
問題解答
回答1:作用域中未聲明 n
回答2:函數模板的相關聲明結構常見就三種:依次是聲明函數模板,聲明特化和聲明實例。
template <class T, ...>void foo();template <>void foo<T1, T2, ...>(); // 除非是特化含參數包的模板,否則參數列表不能為空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> &);
我覺得你這里不是特化,只是想聲明模板。因為你在函數形式參數列表里用了模板形式參數。參照第一種寫法。
如果你不做太多的模板開發,其實stream的<<的重載都是這個套路,記熟就好。另外一個常見形式是
template <class CharT, class Traits>std::basic_ostream<CharT, Traits> &operator<<(std::basic_ostream<CharT, Traits> &, ??);
編譯器我覺得沒必要換,書上有的語法看書學。要搜也得搜“ostream 重載 寫法”之類的,然后比對代碼。如果是很深的模板用法,拷貝語法錯誤提示搜是搜不出個所以然的。
回答3:編譯器給你的錯誤信息很清晰,可能你讀不懂英語吧。不用糾結選擇那個編譯器,編譯器是無辜的,gcc挺好
相關文章:
1. 如何分別在Windows下用Winform項模板+C#,在MacOSX下用Cocos Application項目模板+Objective-C實現一個制作游戲的空的黑窗口?2. java - new + 類名,一定需要申明一個對象嗎?3. python - linux怎么在每天的凌晨2點執行一次這個log.py文件4. javascript - jQuery each 方法第三個參數args 如何解釋?5. javascript - js中遞歸與for循環同時發生的時候,代碼的執行順序是怎樣的?6. android - 鍵盤遮擋RecyclerView7. php如何獲取訪問者路由器的mac地址8. php - mysql 模糊搜索問題9. 小程序怎么加外鏈,語句怎么寫!求救新手,開文檔沒發現10. javascript - vue-resource中如何設置全局的timeout?
