Erreur du compilateur C2951
Les déclarations de type ne sont autorisées qu’à l’étendue globale, d’espace de noms ou de classe
Vous ne pouvez pas déclarer une classe générique ou de modèle en dehors de l’étendue globale ou de l’espace de noms. Si vous effectuez vos déclarations génériques ou de modèles dans un fichier include, vérifiez que le fichier include est dans l’étendue globale.
L’exemple suivant génère l’erreur C2951 :
// C2951.cpp
template <class T>
class A {};
int main() {
template <class T> // C2951
class B {};
}
C2951 peut également se produire lors de l’utilisation de génériques :
// C2951b.cpp
// compile with: /clr /c
// OK
generic <class T>
ref class GC { };
int main() {
generic <class T> ref class GC2 {}; // C2951
}