컴파일러 오류 C2951
형식 선언은 전역, 네임스페이스 또는 클래스 범위에서만 허용됩니다.
전역 또는 네임스페이스 범위 외부에서는 제네릭 또는 템플릿 클래스를 선언할 수 없습니다. 포함 파일에서 제네릭 또는 템플릿 선언을 만드는 경우 포함 파일이 전역 범위에 있는지 확인합니다.
다음 샘플에서는 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
}