Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Build Insights SDK per C++ è compatibile con Visual Studio 2017 e versioni successive. Per visualizzare la documentazione per queste versioni, impostare il controllo selettore della versione di Visual Studio per questo articolo su Visual Studio 2017 o versione successiva. Si trova nella parte superiore del sommario in questa pagina.
La MatchEventInMemberFunction
funzione viene usata per trovare la corrispondenza di un evento rispetto al tipo descritto dal primo parametro di una funzione membro. L'evento corrispondente viene inoltrato alla funzione membro per un'ulteriore elaborazione.
Sintassi
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);
Parametri
TInterface
Tipo che contiene la funzione membro.
TReturn
Tipo restituito della funzione membro.
TEvent
Tipo dell'evento da trovare.
TExtraParams
Tipi dei parametri aggiuntivi accettati dalla funzione membro insieme al tipo di evento da trovare in corrispondenza.
TExtraArgs
Tipi degli argomenti aggiuntivi passati a MatchEventInMemberFunction
.
evento
Evento da associare al tipo di evento descritto da TEvent.
objectPtr
Puntatore a un oggetto in cui viene chiamato memberFunc .
memberFunc
Funzione membro che descrive il tipo di evento da trovare.
extraArgs
Argomenti che vengono inoltrati perfettamente a memberFunc insieme al parametro del tipo di evento.
Valore restituito
Valore bool
che si verifica true
se la corrispondenza ha avuto esito positivo o false
in caso contrario.
Osservazioni:
Il tipo di evento da usare per il parametro TEvent può essere selezionato da un elenco di classi di acquisizione. Per un elenco di eventi e le classi di acquisizione che è possibile usare per trovare le corrispondenze, vedere la tabella degli eventi.
Esempio
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.
}