我对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/

10-13 08:15