3

我正在编写 C++ 应用程序,它应该在 Windows 上使用 MS C++ 和 Linux 上的 GCC 进行编译。我在 Windows 上编写了一个循环,它遍历 std::list:

 auto  iter = container.GetObj()->begin();
 while (iter!=container.GetObj()->end()){

   (*(iter++))->Execute();

 }

它工作正常,但是在使用 GCC“auto”编译时无法识别:

意外的令牌“auto” (在 NetBeans IDE 中)

所以我修复了它“明确地定义迭代器:

 std::list<Container*>::iterator iter=container.GetObj()->begin();
 while (iter!=container.GetObj()->end()){

   (*(iter++))->Execute();

 }

我的 GCC 版本是 4.7.2

这是否意味着 GCC 不支持 auto 关键字?可能我需要升级编译器?

4

1 回答 1

6

是 gcc c++ 11 支持的链接。您还需要将 -std=c++11 添加到命令行。

于 2013-01-23T15:49:47.377 回答