【发布时间】:2014-04-28 15:00:57
【问题描述】:
我正在尝试遍历 Player 对象的向量,然后根据 Player 指针返回下一个。我尝试了各种方法来让 lambda 中的运算符匹配,但无法让它工作,并且在堆栈溢出时阅读了类似的此类问题。很抱歉没有发SSCCE,我只是不知道我目前的技能水平如何。
c_player的来源:
定义为:
Player* current_player;
设置为:
void Game::set_first_player_turn(){
current_player = &game_players.back();
}
错误代码:
using namespace std;
vector<Player>game_players;
Player* Game::find_player(Player* c_player){
vector<Player>::iterator iter;
iter = find_if(game_players.begin(), game_players.end(),
[&](Player* p ) -> bool{ return p == c_player; }); //This line
// causes the exception. Sets iterator to
// position of the current player
if (iter != game_players.end()){
advance(iter, 1);
}
else{
iter == game_players.begin();
}
current_player = &(*iter);
return current_player;
}
编译错误:
error C2664: 'bool Game::set_game_flow::<lambda_360ac8a355100cfac1adc9f8eba8d8b9>
::operator ()(Player *) const' : cannot convert parameter 1 from 'Player'
to 'Player *'
感谢您的帮助。
【问题讨论】:
标签: c++ pointers object vector stl