Compiler Error C3350

 

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

delegate' : a delegate constructor expects number argument(s)

When you create an instance of a delegate, you must pass two arguments, an instance of the type containing the delegate function, and the function.

The following sample generates C3350:

// C3350.cpp  
// compile with: /clr  
delegate void SumDelegate();  
  
public ref class X {  
public:  
   void F() {}  
   static void F2() {}  
};  
  
int main() {  
   X ^ MyX = gcnew X();  
   SumDelegate ^ pSD = gcnew SumDelegate();   // C3350  
   SumDelegate ^ pSD1 = gcnew SumDelegate(MyX, &X::F);  
   SumDelegate ^ pSD2 = gcnew SumDelegate(&X::F2);  
}  

Managed Extensions for C++

The following sample generates C3350:

// C3350b.cpp  
// compile with: /clr:oldSyntax  
#using <mscorlib.dll>  
__delegate void SumDelegate();  
  
public __gc class X {  
public:  
   void F() {}  
   static void F2() {}  
};  
  
int main() {  
   X * MyX = new X();  
   SumDelegate *pSD = new SumDelegate();   // C3350  
   SumDelegate *pSD1 = new SumDelegate(MyX, &X::F);  
   SumDelegate *pSD2 = new SumDelegate(&X::F2);  
}  

Show: