Navigation
API > API/Runtime > API/Runtime/Engine > API/Runtime/Engine/TVisitorPatternBase
IVisitorInterface and IVisitorBase: These classes use template metaprogramming to recursively build a virtual listener interface (IVisitorBase) for our visitor pattern with a virtual Visit(T&) overload for each type in the parameter pack (Ts...)
for example, if we want an IVisitorBase class which looks like: class IVisitorBase { public: virtual void Visit(ConsumerTypeA& InConsumer) {} virtual void Visit(ConsumerTypeB& InConsumer) {} virtual void Visit(ConsumerTypeC& InConsumer) {} };
TVisitorInterface expands a template parameter pack so that IVisitorBase ends up with a virtual Visit() overload for each type in the Interfaces parameter pack
| Name | TVisitorInterface |
| Type | class |
| Header File | /Engine/Source/Runtime/Engine/Classes/Sound/QuartzCompileTimeVisitor.h |
| Include Path | #include "Sound/QuartzCompileTimeVisitor.h" |
Syntax
template<typename... Interfaces>
class TVisitorInterface
Class Specializations
| Name | Remarks |
|---|---|
| TVisitorInterface< First, Rest... > | Specialization for the recursive case. |
| TVisitorInterface< Interface > | Specialization for the base case. |