1

这是我目前正在使用的一些代码:

int Engine::getEntityCount(const int objectType)
{
    using namespace std;

    int total = 0;
    for_each(p_entities.begin(), p_entities.end(),
    [&objectType,&total](pair<const int, const list<Entity*>> pair)
    {   
        for_each((pair.second).begin(),(pair.second).end(),
        [&objectType,&total](Entity* &entity)
        {
            if ( entity->getAlive() == true && entity->getObjectType() == objectType )
                ++total;
        });
    });
    return total;
}

我从 intel c++ 收到以下错误:

错误:无法使用给定的参数列表 c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\algorithm 调用函数“lambda [](Entity *&)->void::operator()”

我很难理解这里出了什么问题。有没有人有任何想法?

4

2 回答 2

2

您要求对const指向Entity. 包含该指针的列表是const. 您必须在非常量指针或 const 列表之间做出选择。

于 2012-12-03T06:07:24.243 回答
-1
....
    for_each((pair.second).begin(),(pair.second).end(),
    [&objectType,&total](const Entity* entity)
    {
        ....
    });
});

……

于 2012-12-03T06:14:46.227 回答