为什么g ++需要-fpermissive标志来在c ++中打印迭代器值?

时间:2015-01-14 15:29:42

标签: c++ gcc vector iterator

对于以下C ++代码:

 cout<<"First symbol is : "<<*it<<std::endl;

我收到以下错误:

Transformtheexpression.cpp:50:42: error: name lookup of 'it' changed for ISO 'for' scoping [-fpermissive]

         cout<<"First symbol is : "<<*it<<std::endl;
                                      ^ Transformtheexpression.cpp:50:42: note: (if you use '-fpermissive' G++ will accept your code)

如果我通过运行编译代码:

g++ -fpermissive

然后代码编译。 请解释一下这种行为。

1 个答案:

答案 0 :(得分:1)

你的for循环中可能有错误。

你可能用分号终止了你的for循环,结束了&#34;它的范围&#34;。

它是for循环的局部变量。你试图在循环之外使用它。