C ++ lambda参数列表

时间:2012-12-03 06:03:35

标签: c++ c++11 lambda

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

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 ++收到以下错误:

  

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

我很难理解这里的错误。有没有人有任何想法?

2 个答案:

答案 0 :(得分:2)

您要求对const指针进行非Entity引用。包含该指针的列表是const。您必须在非const指针或const列表之间做出决定。

答案 1 :(得分:-1)

....
    for_each((pair.second).begin(),(pair.second).end(),
    [&objectType,&total](const Entity* entity)
    {
        ....
    });
});

...