Aracılığıyla paylaş


MatchEventInMemberFunction

C++ Build Insights SDK'sı Visual Studio 2017 ve sonraki sürümlerle uyumludur. Bu sürümlerin belgelerini görmek için bu makalenin Visual Studio Sürüm seçici denetimini Visual Studio 2017 veya üzeri olarak ayarlayın. Bu sayfadaki içindekiler tablosunun en üstünde bulunur.

MatchEventInMemberFunction işlevi, bir olayı üye işlevinin ilk parametresi tarafından açıklanan türle eşleştirmek için kullanılır. Eşleşen olay, daha fazla işlem için üye işlevine iletilir.

Sözdizimi

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);

Parametreler

TInterface
Üye işlevini içeren tür.

TReturn
Üye işlevinin dönüş türü.

TEvent
Eşleşecek olayın türü.

TExtraParams
Üye işlevi tarafından kabul edilen ek parametrelerin türleri ve eşleşecek olay türü.

TExtraArgs
öğesine geçirilen MatchEventInMemberFunctionek bağımsız değişkenlerin türleri.

event
TEvent tarafından açıklanan olay türüyle eşleşecek olay.

objectPtr
memberFunc öğesinin çağrıldığı nesnenin işaretçisi.

memberFunc
Eşleşecek olay türünü açıklayan üye işlevi.

extraArgs
Olay türü parametresiyle birlikte memberFunc'a mükemmel iletilen bağımsız değişkenler.

Dönüş Değeri

bool Eşleştirmenin başarılı olduğu veya false başka bir şekilde olduğu bir değertrue.

Açıklamalar

TEvent parametresi için kullanılacak olay türü, yakalama sınıfları listesinden seçilebilir. Olayları ve bunları eşleştirmek için kullanabileceğiniz yakalama sınıflarının listesi için olay tablosuna bakın.

Örnek

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