Compartir a través de


Error del compilador C2951

las declaraciones de tipo solo se permiten en un ámbito global, de espacio de nombres o de clase

No se puede declarar una clase genérica o de plantilla fuera del ámbito global o de espacio de nombres. Si realiza las declaraciones genéricas o de plantilla en un archivo de inclusión, asegúrese de que ese archivo está en el ámbito global.

El ejemplo siguiente genera el error C2951:

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

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

El error C2951 se puede producir también cuando se usan genéricos.

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

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

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