Compiler Error C3227
'parameter' : cannot use 'keyword' to allocate a generic type
In order to instantiate a type, an appropriate constructor is required. However, the compiler is not able to ensure that an appropriate constructor is available.
You can use templates instead of generics to resolve this error, or you can use one of several methods to create an instance of the type.
Example
The following sample generates C3227.
// C3227.cpp
// compile with: /clr /c
generic<class T> interface class ICreate {
static T Create();
};
generic <class T>
where T : ICreate<T>
ref class C {
void f() {
T t = new T; // C3227
// OK
T t2 = ICreate<T>::Create();
T t3 = safe_cast<T>( System::Activator::CreateInstance(T::typeid) );
}
};
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for