We recommend using Visual Studio 2017

Compiler Error C3830

 

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

type1': cannot inherit from 'type2', value types can only inherit from interface classes

A value type cannot inherit a base class. For more information, see Classes and Structs.

The following sample generates C3830:

// C3830a.cpp  
// compile with: /clr /c  
public value struct MyStruct4 {  
   int i;  
};  
  
public value class MyClass : public MyStruct4 {};   // C3830  
  
// OK  
public interface struct MyInterface4 {  
   void i();  
};  
  
public value class MyClass2 : public MyInterface4 {  
public:  
   virtual void i(){}  
};  

Managed Extensions for C++

A __value type cannot inherit a base class.

The following sample generates C3830:

// C3830b.cpp  
// compile with: /clr:oldSyntax /c  
#using <mscorlib.dll>  
__value struct v : public System::Object {};   // C3830  
__value struct w {};   // OK  

Show: