Compartilhar via


Erro do compilador C2951

declarações de tipo são permitidas apenas no escopo global, de namespace ou de classe

Você não pode declarar uma classe genérica ou de modelo fora do escopo global ou de namespace. Se você fizer suas declarações genéricas ou de modelo em um arquivo de inclusão, verifique se o arquivo de inclusão está no escopo global.

A amostra a seguir gera o erro C2951:

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

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

O erro C2951 também pode ocorrer ao usar genéricos:

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

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

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