Condividi tramite


Errore del compilatore C3390

'type_arg': argomento di tipo non valido per il parametro generico 'param' di 'generic_type' generico, deve essere un tipo riferimento

Osservazioni:

L'istanza di un tipo generico è stata creata in modo non corretto. Controllare la definizione del tipo.

Per altre informazioni, vedere Generics.

Esempio

Il primo esempio usa C# per creare un componente che contiene un tipo generico. Questo tipo ha determinati vincoli che non sono supportati durante la creazione di tipi generici in C++/CLI. Per altre informazioni, vedere Vincoli sui parametri di tipo.

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

Quando il componente C3390.dll è disponibile, l'esempio seguente genera l'errore C3390.

// C3390_b.cpp
// Compile by using: cl /clr C3390_b.cpp
#using <C3390.dll>
ref class R { R(int) {} };
value class V {};
ref struct N { N() {} };

int main () {
   GR<V, V, N^>^ gr2;   // C3390 first type must be a ref type
   GR<R^, V, N^>^ gr2b; // OK - do this instead
}