C++ C++;std::查找lambda表达式

C++ C++;std::查找lambda表达式,c++,c++11,lambda,find,expression,C++,C++11,Lambda,Find,Expression,就我个人而言,我无法让这个代码正常工作。我试图在XNA框架的弃用之后将我的代码从C++的代码转换成C++,但是一个顽固的方法不想被转换。在C#中,它是: 在C++中,我试图使用的代码是: Tile Level::GetTileAtPosition(bool screenOrGame, sf::Vector2f position) { vector<Tile>::iterator it; if (screenOrGame) { it = fi

就我个人而言,我无法让这个代码正常工作。我试图在XNA框架的弃用之后将我的代码从C++的代码转换成C++,但是一个顽固的方法不想被转换。在C#中,它是:

在C++中,我试图使用的代码是:

Tile Level::GetTileAtPosition(bool screenOrGame, sf::Vector2f position)
{
    vector<Tile>::iterator it;

    if (screenOrGame)
    {

        it = find(tileList.begin(), tileList.end(), [position](const Tile &t) { return t.GetPosition() == sf::Vector2f(position.x / 24, position.y / 24); });
        return Tile(it->GetID(), it->GetPosition().x, it->GetPosition().y);

    }

    else
    {

        it = find(tileList.begin(), tileList.end(), [position](const Tile& t) { return t.GetPosition() == position; });
        return Tile(it->GetID(), it->GetPosition().x, it->GetPosition().y);

    }

}
Tile-Level::GetTileAtPosition(bool-screenOrGame,sf::Vector2f-position)
{
向量::迭代器;
如果(screenOrGame)
{
它=find(tileList.begin()、tileList.end()、[position](const Tile&t){return t.GetPosition()==sf::Vector2f(position.x/24,position.y/24);});
返回平铺(it->GetID(),it->GetPosition().x,it->GetPosition().y);
}
其他的
{
它=find(tileList.begin()、tileList.end()、[position](const Tile&t){return t.GetPosition()==position;});
返回平铺(it->GetID(),it->GetPosition().x,it->GetPosition().y);
}
}
<>在C++赋值行(i=…),我正经历一个严重的错误,我无法找出原因,或者解决方法。它返回:

error C2679: binary '==' : no operator found which takes a right-hand operand of type 'const Blobby::Level::GetTileAtPosition::<lambda_29eb981cd341d9c05d39c4654bc470b9>' (or there is no acceptable conversion)    c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility 3186
错误C2679:二进制“==”:未找到接受类型为“const Blobby::Level::GetTileAtPosition::”的右操作数的运算符(或没有可接受的转换)c:\program files(x86)\microsoft visual studio 11.0\vc\include\xutility 3186

<> P>是否有任何方法来解决这个错误,或者在C++中实现一个更好的/更实用的方法在C++中?< P/> < P>,比较的版本有时被附有<代码>,如果。
std::find
就是这种情况
std::find
使用一个元素进行查找,而
std::find\u if
使用一个实现相等的比较器。该错误仅仅意味着它找不到与lambda等价的
磁贴
的匹配项

error C2679: binary '==' : no operator found which takes a right-hand operand of type 'const Blobby::Level::GetTileAtPosition::<lambda_29eb981cd341d9c05d39c4654bc470b9>' (or there is no acceptable conversion)    c:\program files (x86)\microsoft visual studio 11.0\vc\include\xutility 3186