设为首页 加入收藏

TOP

expected `;' before ‘iter’
2015-02-02 21:38:38 来源: 作者: 【 】 浏览:22
Tags:expected ' before iter

gcc版本:


代码如下:


template
void display(const vector &vec, ostream &os)
{
vector::const_iterator iter=vec.begin();
vector::const_iterator end_it=vec.end();


for( ; iter != end_it; ++iter)
os << *iter << ' ';
os << endl;
}


错误如下:


test.cpp: In function ‘void display(const std::vector >&,std::ostream&)’:
test.cpp:9: 错误: expected `;' before ‘iter’
test.cpp:10: 错误: expected `;' before ‘end_it’
test.cpp:12: 错误: ‘iter’在此作用域中尚未声明
test.cpp:12: 错误: ‘end_it’在此作用域中尚未声明


这是因为C++标准的规定,引用模板类型内部的type必须显示告诉编译器这是个type( iterator)而不是variable.默认情况下认为模板内部的成员为变量。
在GCC编译器中认为vector::const_iterator 不是一个type,
在VC或Intel Compiler中不会出现这样的问题。
因此改为:


代码:


void display(const vector &vec, ostream &os)
{
typename vector::const_iterator iter=vec.begin();
typename vector::const_iterator end_it=vec.end();


for( ; iter != end_it; ++iter)
os << *iter << ' ';
os << endl;
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux Shell >/dev/null 2>.. 下一篇Linux kernel进行编译时提示No ru..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: