Поделиться через


Ошибка компилятора C3731

несовместимое событие function1 и обработчик function2; Источник событий и обработчик событий должны быть одинаковыми типами

Источник событий и приемник событий должны иметь одинаковый тип (например native , типы и com типы). Чтобы устранить эту ошибку, сделайте типы источника событий и сопоставления обработчика событий.

Следующий пример приводит к возникновению ошибки C3731:

// C3731.cpp
// compile with: /clr
#using <mscorlib.dll>
[event_source(native)]
struct A {
   __event void MyEvent();
};

[event_receiver(managed)]
// try the following line instead
// [event_receiver(native)]
struct B {
   void func();
   B(A a) {
      __hook(&A::MyEvent, &a, &B::func);   // C3731
   }
};

int main() {
}