我在想,如果那里有一个方法来模仿(从C#)在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 ::功能和boost ::绑定和有关FastDelegates的文章在代码项目上,但他们似乎都要求你在其他地方定义函数然后绑定到它。我希望能够提供在创建对象如果可能的话
由于功能提前
您使用的是C++ 0x吗? – 2011-03-08 19:58:09
Im使用MSVC 2010/boost – Megatron 2011-03-08 20:00:24
2010支持足够的C++ 0x来执行lambdas。有关详细信息,请参阅以下内容:http://en.wikipedia.org/wiki/C%2B%2B0x#Lambda_functions_and_expressions – luke 2011-03-08 20:02:49