Compartir a través de


Error del compilador C3392

'arg_tipo': argumento de tipo no válido para el parámetro genérico 'parámetro' del 'tipo_genérico' genérico, debe tener un constructor sin parámetros público.

Se crearon incorrectamente instancias de un tipo genérico. Compruebe la definición de tipo. Para más información, vea Genéricos.

Ejemplo

En el ejemplo siguiente, se utiliza C# para crear un componente que contiene un tipo genérico con ciertas restricciones que no se admiten cuando se crean tipos genéricos en C++/CLI. Para obtener más información, vea Restricciones de tipos de parámetros.

// C3392.cs
// Compile by using: csc /target:library C3392.cs
// a C# program
public class GR<C, V, N>
where C : class
where V : struct
where N : new() {}

Cuando el componente C3392.dll está disponible, el ejemplo siguiente genera el error C3392.

// C3392_b.cpp
// Compile by using: cl /clr C3392_b.cpp
#using <C3392.dll>

ref class R { R(int) {} };
ref class N { N() {} };

value class V {};

ref class N2 { public: N2() {} };
ref class R2 { public: R2() {} };

int main () {
   GR<R^, V, N^>^ gr1;   // C3392
   GR<R^, V, N2^>^ gr1a; // OK

   GR<R^, N^, N^>^ gr3;  // C3392
   GR<R^, V, N2^>^ gr3a; // OK

   GR<R^, V, R^>^ gr4;   // C3392
   GR<R^, V, R2^>^ gr4a; // OK
}