We recommend using Visual Studio 2017

Compiler Error C3808

 

The latest version of this topic can be found at Compiler Error C3808.

type' : a class with the ComImport attribute cannot define member 'member', only abstract or dllimport functions are allowed

A type that derived from ComImportAttribute cannot define member.

The following sample generates C3808.

// C3808.cpp  
// compile with: /c /clr:pure user32.lib  
using namespace System::Runtime::InteropServices;  
  
[System::Runtime::InteropServices::ComImportAttribute()]  
ref struct S1 {  
   int f() {}   // C3808  
   virtual int g() abstract;   // OK  
  
   [DllImport("msvcrt.dll")]  
   int printf(System::String ^, int i);   // OK  
};  

Show: