我对C++中的每个循环感到困惑。我在主游戏循环中有以下代码:
for each (Bubble b in bubbles){
b.Update();
}
for each (Bubble b in bubbles){
b.Draw();
}
它不会更新任何内容,但是会绘制1个气泡。
编辑:此代码有效
struct BubbleUpdater {
void operator()(Bubble & b) { b.Update(); }
} updater;
struct BubbleDrawer {
void operator()(Bubble & b) { b.Draw(); }
} drawer;
void OnTimer(){ //this is my main game loop
std::for_each(bubbles.begin(),bubbles.end(),drawer);
std::for_each(bubbles.begin(),bubbles.end(),updater);
}
最佳答案
更改您的BubbleUpdater类以通过引用接受它的参数
struct BubbleUpdater {
void operator()(Bubble & b) { b.Update(); }
} updater;
这样,您对
std::for_each
的调用就可以了。如果您的编译器支持它(而VC10则支持),则可以使用lambda而不是创建远程函数对象类。是的,它是标准的c++,或者将很快推出。
std::for_each (bubbles.begin(), bubbles.end(), [](Bubble & b){
b.Update();
});
关于c++ - for_each C++问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6473524/