Поделиться через


Ошибка компилятора C3227

"parameter" : не может использовать ключевое слово для выделения универсального типа

Для создания экземпляра типа требуется соответствующий конструктор. Однако компилятор не может убедиться, что соответствующий конструктор доступен.

Вы можете использовать шаблоны вместо универсальных шаблонов для устранения этой ошибки или использовать один из нескольких методов для создания экземпляра типа.

Пример

В следующем примере возникает ошибка 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) );
   }
};