平时用codeblocks,编译时出现这些问题,上网查结果很少,要么跳转要英文网站,请问这是因为这款软件默认GCC编译而提示这样的错误(gcc的特定语法?)还是英文导致搜索结果少(我用百度)
处理这些问题老是半天都找不到解决方法。如果前者,我应该改大众一些的IDE,如vc++;如果后者,我应该改为中文?
应该是前者吧,因为搜索结果老是看到gcc字眼,如果在cb里设置为vc++编程是否错误显示就是vc类型了呢?
附图_原错误代码
认证0级讲师
作用域中未聲明 n
函數模板的相關聲明結構常見就三種:依序是聲明函數模板,聲明特化和宣告實例。
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> &); template std::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 重載 寫法」之類的,然後比對程式碼。如果是很深的範本用法,拷貝語法錯誤提示搜是搜不出個所以然的。
編譯器給你的錯誤訊息很清晰,可能你看不懂英文吧。不用糾結選擇那個編譯器,編譯器是無辜的,gcc還挺好
作用域中未聲明 n
函數模板的相關聲明結構常見就三種:依序是聲明函數模板,聲明特化和宣告實例。
換成運算子重載也是一樣
我覺得你這裡不是特化,只是想聲明模板。因為你在函數形式參數列表裡用了模板形式參數。參考第一種寫法。
如果你不做太多的模板開發,其實stream的
編譯器我覺得沒必要換,書上有的文法看書學。要搜尋也要搜尋「ostream 重載 寫法」之類的,然後比對程式碼。如果是很深的範本用法,拷貝語法錯誤提示搜是搜不出個所以然的。
編譯器給你的錯誤訊息很清晰,可能你看不懂英文吧。不用糾結選擇那個編譯器,編譯器是無辜的,gcc還挺好