我想知道在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;
})
我看过boost :: function和boost :: bind以及一篇关于代码项目的FastDelegates的文章,但它们似乎都要求你在其他地方定义函数然后绑定到它。我希望能够在对象创建时提供函数
提前致谢
答案 0 :(得分:3)
这些称为匿名函数(lambdas),在C ++中不受支持。从wikipedia article:开始,从C++0x开始,匿名函数已添加到C ++语言中。“
答案 1 :(得分:0)
C ++(和C)使用函数指针而不是委托。与引用不同,指针可以为它们分配空值。