Błąd kompilatora C3227Compiler Error C3227

"parameter": nie można użyć słowa kluczowego "Keyword" do przydzielenia typu ogólnego'parameter' : cannot use 'keyword' to allocate a generic type

Aby utworzyć wystąpienie typu, wymagany jest odpowiedni Konstruktor.In order to instantiate a type, an appropriate constructor is required. Jednak kompilator nie jest w stanie zapewnić, że jest dostępny odpowiedni Konstruktor.However, the compiler is not able to ensure that an appropriate constructor is available.

Aby rozwiązać ten problem, można użyć szablonów zamiast typów ogólnych lub użyć jednej z kilku metod tworzenia wystąpienia typu.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.

PrzykładExample

Poniższy przykład generuje C3227.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) );
   }
};