我有一个关于行为树模式中的这种类型的实现调用的快速问题。从我所看到的第一行中,他们将指向对象的指针称为"builder",但其后的每一行都省略了对指针对象的调用"builder"。他们还省略了";"分号
a:这是什么类型的模式,在哪里可以找到这样的指针上调用成员的引用
BT::BehaviorTree* Bt=Builder
->ActiveSelector()
->Sequence()
->Condition(BT::EConditionMode::IsSeeEnemy,false)
->Back()
->ActiveSelector()
-> Sequence()
->Condition(BT::EConditionMode::IsHealthLow,false)
->Back()
->Action(BT::EActionMode::Runaway)
->Back()
->Back()
->Parallel(BT::EPolicy::RequireAll, BT::EPolicy::RequireOne)
->Condition(BT::EConditionMode::IsEnemyDead,true)
->Back()
->Action(BT::EActionMode::Attack)
->Back()
->Back()
->Back()
->Back()
->Action(BT::EActionMode::Patrol)
->End();
类的定义如下所示
class BehaviorTreeBuilder
{
public:
BehaviorTreeBuilder() { }
~BehaviorTreeBuilder() { }
BehaviorTreeBuilder* Sequence();
BehaviorTreeBuilder* Action(EActionMode ActionModes);
BehaviorTreeBuilder* Condition(EConditionMode ConditionMode, bool IsNegation);
BehaviorTreeBuilder* Selector();
BehaviorTreeBuilder* Repeat(int RepeatNum);
BehaviorTreeBuilder* ActiveSelector();
BehaviorTreeBuilder* Filter();
BehaviorTreeBuilder* Parallel(EPolicy InSucess, EPolicy InFailure);
BehaviorTreeBuilder* Monitor(EPolicy InSucess, EPolicy InFailure);
BehaviorTreeBuilder* Back();
BehaviorTree* End();
}
我的主要问题是,我理解他们创建了一个对象指针,并向指针添加了方法。
但我不明白的是,当他们调用树构建器时,每一个新行都省略了指针名称,并使用了以下内容
...= Builder
-> functionA()
-> functionB()
-> functionA()
-> functionC();
这可能是某种lambda表达式或堆栈或队列模式吗?模式名称是什么?我在哪里可以找到它的参考,因为我读过的所有书籍都没有提到这样做。
先谢了!
1条答案
按热度按时间7gcisfzg1#
课程的实施
这不是类实现,这是类定义。
可能的类成员函数实现:
所有的魔力都在
return this
里。这和
如果一个函数返回一个指针,你可以像处理指针一样处理结果。