Error del compilador C3830

Actualización: noviembre 2007

Mensaje de error

'tipo1': no puede heredar de 'tipo2', los tipos de valor sólo pueden heredar de las clases de interfaz
'type1': cannot inherit from 'type2', value types can only inherit from interface classes

Un tipo de valor no puede heredar una clase base. Para obtener más información, vea Classes and Structs (Managed).

El ejemplo siguiente genera el error 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(){}
};

Extensiones administradas para C++

Un tipo __value no puede heredar una clase base.

El ejemplo siguiente genera el error C3830:

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