Compartir a través de


Error del compilador C3227

"parameter": no se puede usar "keyword" para asignar un tipo genérico

Para crear una instancia de un tipo, se requiere un constructor adecuado. Sin embargo, el compilador no puede asegurarse de que haya un constructor adecuado disponible.

Puede usar plantillas en lugar de genéricos para resolver este error, o bien usar uno de varios métodos para crear una instancia del tipo.

Ejemplo

El ejemplo siguiente genera el error 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) );
   }
};