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