MatchEventInMemberFunction
Пакет SDK для Сборки C++ совместим с Visual Studio 2017 и более поздними версиями. Чтобы увидеть документацию для этих версий, установите в данной статье селектор Версия Visual Studio в Visual Studio 2017 и более поздних версий. Он находится в верхней части оглавления на этой странице.
Функция MatchEventInMemberFunction
используется для сопоставления событий с типом, который описывается в первом параметре функции-члена. Подходящее событие пересылается функции-члену для дальнейшей обработки.
Синтаксис
template <
typename TInterface,
typename TReturn,
typename TEvent,
typename... TExtraParams,
typename... TExtraArgs>
bool MatchEventInMemberFunction(
const RawEvent& event,
TInterface* objectPtr,
TReturn (TInterface::* memberFunc)(TEvent, TExtraParams...),
TExtraArgs&&... extraArgs);
Параметры
TInterface
Тип, который содержит функцию-член.
TReturn
Возвращаемый тип функции-члена.
TEvent
Тип события для сопоставления.
TExtraParams
Типы дополнительных параметров, принимаемых функцией-членом, а также тип события для сопоставления.
TExtraArgs
Типы дополнительных аргументов, переданных в MatchEventInMemberFunction
.
event
Событие для сопоставления с типом события, который описан в TEvent.
objectPtr
Указатель на объект, для которого вызывается memberFunc.
memberFunc
Функция-член, которая описывает тип события для сопоставления.
extraArgs
Аргументы, которые без изменений перенаправляются в memberFunc вместе с параметром типа события.
Возвращаемое значение
Параметр типа bool
, который принимает значение true
в случае успешного сопоставления или false
в противном случае.
Замечания
Тип события для параметра TEvent, можно выбрать из списка классов захвата. Список событий и классы захвата, которые можно использовать для сопоставления, см. в таблице событий.
Пример
void MyClass::Foo1(Function f) {}
void MyClass::Foo2(Compiler cl) {}
void MyClass::OnStartActivity(const EventStack& eventStack)
{
// Let's assume eventStack contains:
// [Compiler, BackEndPass, C2DLL, CodeGeneration, Thread, Function]
auto& functionEvent = eventStack.Back(); // The Function event
bool b1 = MatchEventInMemberFunction(
functionEvent, this, &MyClass::Foo1);
bool b2 = MatchEventInMemberFunction(
functionEvent, this, &MyClass::Foo2);
// b1: true because the first parameter of Foo1 is Function.
// b2: false because the first parameter of Foo2 isn't Function.
}