MatchEventInMemberFunction
En este artículo
El SDK de C++ Build Insights es compatible con Visual Studio 2017 y versiones posteriores. Para ver la documentación de estas versiones, establezca el control de selector de Versión de Visual Studio para este artículo en Visual Studio 2017 o versiones posteriores. Se encuentra en la parte superior de la tabla de contenido de esta página.
La función MatchEventInMemberFunction
se usa para comparar un evento con el tipo descrito por el primer parámetro de una función miembro. El evento coincidente se reenvía a la función miembro para su posterior procesamiento.
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);
TInterface
Tipo que contiene la función miembro.
TReturn
Tipo de valor devuelto de la función miembro.
TEvent
Tipo de evento que se compara.
TExtraParams
Tipos de los parámetros adicionales aceptados por la función miembro junto con el tipo de evento que se compara.
TExtraArgs
Tipos de los argumentos adicionales que se pasaron a MatchEventInMemberFunction
.
event
Evento que se va a comparar con el tipo de evento descrito por TEvent.
objectPtr
Puntero a un objeto en el que se llama a memberFunc.
memberFunc
Función miembro que describe el tipo de evento que se compara.
extraArgs
Argumentos que se reenvían directamente a memberFunc junto con el parámetro del tipo de evento.
Valor bool
que es true
si la coincidencia se produjo correctamente, o false
de lo contrario.
El tipo de evento que se va a usar para el parámetro TEvent se puede seleccionar de una lista de clases de captura. Para obtener una lista de eventos y las clases de captura que puede usar para la comparación, consulte la tabla de eventos.
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.
}