Erreur du compilateur C3825
'class' : une classe managée ou WinRTclass ne peut prendre en charge que les événements managés ou WinRTevents
Seuls les événements .NET sont pris en charge dans les classes managées. Seuls les événements Windows Runtime sont pris en charge dans les classes Windows Runtime. Pour corriger cette erreur dans du code managé, modifiez le paramètre de type de event_source
et event_receiver
de native
à managed
. Vous pouvez également supprimer l'attribut.
Exemple
L'exemple suivant génère l'erreur C3825 et montre comment la corriger :
// C3825a.cpp
// compile with: /clr
public delegate void del1();
[event_source(native)] // To fix, change 'native' to 'managed' or delete this line
ref class CEventSrc
{
public:
event del1^ event1; // C3825
void FireEvents() {
event1();
}
};
[event_receiver(native)] // To fix, change 'native' to 'managed' or delete this line
ref class CEventRec
{
public:
void handler1()
{
System::Console::WriteLine("Executing handler1().\n");
}
void HookEvents(CEventSrc^ pSrc)
{
pSrc->event1 += gcnew del1(this, &CEventRec::handler1);
}
void UnhookEvents(CEventSrc^ pSrc)
{
pSrc->event1 -= gcnew del1(this, &CEventRec::handler1);
}
};
int main()
{
CEventSrc^ pEventSrc = gcnew CEventSrc;
CEventRec^ pEventRec = gcnew CEventRec;
pEventRec->HookEvents(pEventSrc);
pEventSrc->FireEvents();
pEventRec->UnhookEvents(pEventSrc);
}