Compiler Error C3709
Visual Studio 2015
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Compiler Error C3709.
function': improper syntax for specifying event in __hook/__unhook
When you specify an event source with __hook or __unhook, the first parameter must be a valid event method and the second parameter must be a valid event source object (not a method).
The following sample generates C3709:
// C3709.cpp
// compile with: /LD
[event_source(native)]
class CEventSrc
{
public:
__event void event1();
};
[event_receiver(native)]
class CEventRec
{
public:
void handler1()
{
}
void HookEvents(CEventSrc* pSrc)
{
__hook(bad, pSrc, CEventRec::handler1); // C3709
// Try the following line instead:
// __hook(&CEventSrc::event1, pSrc, CEventRec::handler1);
}
void UnhookEvents(CEventSrc* pSrc)
{
__unhook(&CEventSrc::event1, pSrc, CEventRec::handler1);
}
};
Show: