Condividi tramite


Errore del compilatore C3225

Aggiornamento: novembre 2007

Messaggio di errore

l'argomento di tipo generico per 'arg' non può essere 'tipo'. Deve essere un tipo di valore o un tipo di handle
generic type argument for 'arg' cannot be 'type', it must be a value type or handle type

Il tipo dell'argomento di tipo generico non è corretto.

Per ulteriori informazioni, vedere Generics (Visual C++).

Esempio

Non è possibile creare un'istanza di un tipo generico con un tipo nativo. Nell'esempio seguente viene generato l'errore C3225:

// C3225.cpp
// compile with: /clr
class A {};

ref class B {};

generic <class T>
ref class C {};

int main() {
   C<A>^ c = gcnew C<A>;   // C3225
   C<B^>^ c2 = gcnew C<B^>;   // OK
}

Nell'esempio riportato di seguito viene creato un componente utilizzando C#. Il vincolo specifica che è possibile creare un'istanza del tipo generico solo con un tipo di valore.

// C3225_b.cs
// compile with: /target:library
// a C# program
public class MyList<T> where T: struct {}

In questo esempio viene utilizzato il componente creato con C# e viene violato il vincolo per cui è possibile creare un'istanza di MyList solo con un tipo di valore diverso da Nullable. Nell'esempio seguente viene generato l'errore C3225:

// C3225_c.cpp
// compile with: /clr
#using "C3225_b.dll"
ref class A {};
value class B {};
int main() {
   MyList<A> x;   // C3225
   MyList<B> y;   // OK
}