Ошибка компилятора C3225
аргумент универсального типа для "аргумента" не может быть "типом", он должен иметь тип значения или тип дескриптора
Аргумент универсального типа имеет неверный тип.
Дополнительные сведения см. в разделе Generics (Visual C++).
Пример
Нельзя создавать экземпляры универсального типа в собственном типе. В следующем примере возникает ошибка 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
}
В следующем примере создается компонент с помощью C#. Обратите внимание, что ограничение указывает, что экземпляры универсального типа могут создаваться только с типом значения.
// C3225_b.cs
// compile with: /target:library
// a C# program
public class MyList<T> where T: struct {}
В данном примере потребляется компонент, написанный на языке C#, и нарушается ограничение, что экземпляры MyList могут создаваться только с типом значения, отличным от Nullable. В следующем примере возникает ошибка 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
}