Export (0) Print
Expand All
Expand Minimize

Compiler Error C3754

delegate constructor: member function 'function' cannot be called on an instance of type 'type'

A call was made to a function through a pointer to a type that does not contain the function.

The following sample generates C3754:

// C3754a.cpp
// compile with: /clr
using namespace System;

delegate void MyDel();

interface class MyInterface {};

ref struct MyClass : MyInterface {
   void f() {}
};

int main() {
   MyInterface^ p = gcnew MyClass;
   MyDel^ q = gcnew MyDel(p, &MyClass::f);   // C3754
   // try the following line instead
//   MyDel^ q = gcnew MyDel(safe_cast<MyClass^>(p), &MyClass::f);
}

The following sample generates C3754:

// C3754b.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
using namespace System;

__delegate void MyDel();

__gc __interface MyInterface {};

__gc struct MyClass : MyInterface {
   void f() {}
};

int main() {
   MyInterface* p = new MyClass;
   MyDel* q = new MyDel(p, &MyClass::f);   // C3754
   // try the following line instead
   // MyDel* q = new MyDel(__try_cast<MyClass*>(p), &MyClass::f);
}

Community Additions

ADD
Show:
© 2014 Microsoft