代码块抛出关于 for_each 的预期主表达式错误

Code Blocks throws expected primary-expression error about for_each

我正在使用 Irrlicht 创建游戏,目前正在制作 Linux 版本。我将我的代码移到了 Code:Blocks 并删除了 pragmas 之类的东西,但是我得到了关于我的 for_each 循环的以下错误:

||=== Build: Debug in IrrlichtScene (compiler: GNU GCC Compiler) ===|
/home/ubuntu/Desktop/IRRPROJECT/TerrainStarter/terrain.cpp||In function ‘int main()’:|
/home/ubuntu/Desktop/IRRPROJECT/TerrainStarter/terrain.cpp|115|error: expected primary-expression before ‘mod’|
/home/ubuntu/Desktop/IRRPROJECT/TerrainStarter/terrain.cpp|115|error: ‘for_each’ was not declared in this scope|
/home/ubuntu/Desktop/IRRPROJECT/TerrainStarter/terrain.cpp|159|error: expected primary-expression before ‘m’|
/home/ubuntu/Desktop/IRRPROJECT/TerrainStarter/terrain.cpp|165|error: expected primary-expression before ‘var’|
/home/ubuntu/Desktop/IRRPROJECT/TerrainStarter/terrain.cpp|171|error: expected primary-expression before ‘an’|
/home/ubuntu/Desktop/IRRPROJECT/TerrainStarter/terrain.cpp|231|warning: unused variable ‘movy’ [-Wunused-variable]|
||=== Build failed: 5 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|

这是我的循环的样子:

for_each (ModelLoader mod in models)
{
    mod.Load();
}

我知道代码与 visual studio 相比可能存在细微差别,但我的 Visual Studio 版本从未遇到过任何问题。预先感谢您的帮助。

您可以在此处使用基于范围的 for 循环代替 for_each

for (auto& mod : models)
{
    mod.Load();
}

否则,如果你想坚持使用 for_each,你会做

std::for_each(models.begin(), models.end(), [](ModelLoader& mod){ mod.Load(); });