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


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

Объявления типов разрешены только в глобальной области, пространства имен или класса.

Нельзя объявить универсальный или шаблонный класс вне глобальной или области пространства имен. Если вы делаете универсальные или шаблонные объявления в файле включения, убедитесь, что файл включения находится в глобальной области.

Следующий пример приводит к возникновению ошибки C2951:

// C2951.cpp
template <class T>
class A {};

int main() {
   template <class T>   // C2951
   class B {};
}

C2951 также может возникать при использовании универсальных шаблонов:

// C2951b.cpp
// compile with: /clr /c

// OK
generic <class T>
ref class GC { };

int main() {
   generic <class T> ref class GC2 {};   // C2951
}