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
}