다음을 통해 공유


컴파일러 오류 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
}