我在这里问了一个类似的问题C++ delegate creation但是我需要用新的限制来做这件事。我会很快重申这个问题
我想知道在C ++中是否可以模仿这种委托行为(来自C#)
new ModifyTargetingStatus("Reversal", "Reverses physical attacks back at the user", -1, new List<CALL_CONDITION>(){CALL_CONDITION.Targetted}, attemptChange: delegate(CharacterMove move, BattleCharacter[] users, ref BattleCharacter[] targets, BattleCharacter holder, BattleField field)
{
if (targets != null && targets.Length == 1 && targets[0] == holder &&
(move.MoveClass == MOVE_CLASS.MC_BASIC_ATTACK ||
move.MoveClass == MOVE_CLASS.MC_STACKED_ATTACK) &&
!move.MoveFlags.Contains(MOVE_FLAG.MF_UNREFLECTABLE))
{
targets = users;
move.Reflected = true;
return true;
}
return false;
})
我需要能够在不使用C ++ 0x的情况下执行此操作,因为我坚持使用gcc版本并不支持C ++ 0x lambdas。我有可用的增强库,但是我正在进入它,所以我无法弄清楚如何专门做这个。
提前感谢您的帮助
答案 0 :(得分:0)
答案 1 :(得分:0)
boost::bind
是此问题的常用解决方案。有关详细信息,请参阅其文档。