java - C++ 编译器选择问题

查看:110
本文介绍了java - C++ 编译器选择问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

平时用codeblocks,编译时出现这些问题,上网查结果很少,要么跳转要英文网站,请问这是因为这款软件默认GCC编译而提示这样的错误(gcc的特定语法?)还是英文导致搜索结果少(我用百度)

处理这些问题老是半天都找不到解决方法。如果前者,我应该改大众一些的IDE,如vc++;如果后者,我应该改为中文?

应该是前者吧,因为搜索结果老是看到gcc字眼,如果在cb里设置为vc++编程是否错误显示就是vc类型了呢?

附图_原错误代码

解决方案

函数模板的相关声明结构常见就三种:依次是声明函数模板,声明特化和声明实例。

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 重载 写法之类的,然后比对代码。如果是很深的模板用法,拷贝语法错误提示搜是搜不出个所以然的。

这篇关于java - C++ 编译器选择问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆