MatchEventInMemberFunction

Zestaw SDK kompilacji języka C++ Szczegółowe informacje jest zgodny z programem Visual Studio 2017 lub nowszym. Aby zapoznać się z dokumentacją dla tych wersji, ustaw kontrolkę selektora wersji programu Visual Studio dla tego artykułu na program Visual Studio 2017 lub nowszy. Znajduje się on w górnej części spisu treści na tej stronie.

Funkcja MatchEventInMemberFunction służy do dopasowywania zdarzenia do typu opisanego przez pierwszy parametr funkcji składowej. Dopasowane zdarzenie jest przekazywane do funkcji składowej w celu dalszego przetwarzania.

Składnia

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);

Parametry

TInterface
Typ, który zawiera funkcję składową.

TReturn
Zwracany typ funkcji składowej.

TEvent
Typ zdarzenia, który ma być zgodny.

TExtraParams
Typy dodatkowych parametrów akceptowanych przez funkcję składową wraz z typem zdarzenia, które mają być zgodne.

TExtraArgs
Typy dodatkowych argumentów, które zostały przekazane do MatchEventInMemberFunction.

event
Zdarzenie, które ma być zgodne z typem zdarzenia opisanym przez TEvent.

objectPtr
Wskaźnik do obiektu, na którym element memberFunc jest wywoływany.

memberFunc
Funkcja składowa, która opisuje typ zdarzenia do dopasowania.

extraArgs
Argumenty, które są idealnie przekazywane do elementu memberFunc wraz z parametrem typu zdarzenia.

Wartość zwracana

bool Wartość, która jest true w przypadku pomyślnego dopasowania lub false w inny sposób.

Uwagi

Typ zdarzenia do użycia dla parametru TEvent można wybrać z listy klas przechwytywania. Aby uzyskać listę zdarzeń i klas przechwytywania, których można użyć do ich dopasowania, zobacz tabelę zdarzeń.

Przykład

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.
}