类型声明只允许在全局、命名空间或类范围中使用
无法在全局或命名空间范围之外声明泛型或模板类。 如果在包含文件中进行泛型或模板声明,请确保包含文件在全局范围内。
以下示例生成 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
}