Sdílet prostřednictvím


MatchEventInMemberFunction

Sada C++ Build Insights SDK je kompatibilní se sadou Visual Studio 2017 a novějšími verzemi. Pokud chcete zobrazit dokumentaci k těmto verzím, nastavte ovládací prvek selektoru verzí sady Visual Studio pro tento článek na Visual Studio 2017 nebo novější. Nachází se v horní části obsahu na této stránce.

Funkce MatchEventInMemberFunction se používá ke shodě události s typem popsaným prvním parametrem členské funkce. Odpovídající událost se předá členské funkci pro další zpracování.

Syntaxe

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, který obsahuje členovu funkci.

TReturn
Návratový typ členské funkce.

TEvent
Typ události, která se má shodovat.

TExtraParams
Typy dodatečných parametrů akceptovaných členovou funkcí spolu s typem události, který se má shodovat.

TExtraArgs
Typy nadbytečných argumentů, které byly předány MatchEventInMemberFunction.

event
Událost, která se má shodovat s typem události, který popisuje TEvent.

objectPtr
Ukazatel na objekt, na kterém členFunc získá volána.

memberFunc
Členová funkce, která popisuje typ události, který se má shodovat.

extraArgs
Argumenty, které se dokonale předávají členFunc spolu s parametrem typu události.

Návratová hodnota

Hodnota bool , která je true v případě, že byla shoda úspěšná, nebo false jinak.

Poznámky

Typ události, který se má použít pro parametr TEvent , lze vybrat ze seznamu tříd zachycení. Seznam událostí a třídy zachycení, které můžete použít k jejich spárování, najdete v tabulce událostí.

Příklad

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