MatchEventInMemberFunction
Zestaw SDK usługi Build Insights języka C++ 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.
}