C ++委托创建

时间:2011-03-08 19:55:21

标签: c++ delegates

我想知道在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的文章,但它们似乎都要求你在其他地方定义函数然后绑定到它。我希望能够在对象创建时提供函数

提前致谢

2 个答案:

答案 0 :(得分:3)

这些称为匿名函数(lambdas),在C ++中不受支持。从wikipedia article开始,从C++0x开始,匿名函数已添加到C ++语言中。“

答案 1 :(得分:0)

C ++(和C)使用函数指针而不是委托。与引用不同,指针可以为它们分配空值。