Share via


컴파일러 오류 C2990

업데이트: 2007년 11월

오류 메시지

'class' : 비클래스 'type'이(가) 이미 클래스 'type'(으)로 선언되었습니다.
'class' : non-class type as already been declared as a class type

비 제네릭 또는 템플릿 클래스가 제네릭 또는 템플릿 클래스를 다시 정의합니다. 헤더 파일의 충돌 여부를 확인하십시오.

다음 샘플에서는 C2990 경고가 발생하는 경우를 보여 줍니다.

// C2990.cpp
// compile with: /c
template <class T>
class C{};
class C{};   // C2990

제네릭을 사용하는 경우에도 C2990이 발생할 수 있습니다.

// C2990b.cpp
// compile with: /clr /c
generic <class T>
ref struct GC;

ref struct GC {};   // C2990

C2990은 Visual C++ 2005에서 Visual C++ 컴파일러의 변경 사항으로 인해 발생할 수도 있습니다. 컴파일러에서의 템플릿 사양과 관련하여 동일한 형식에 대한 선언이 여러 개인 경우 각 선언이 모두 동일해야 합니다. 자세한 내용은 Visual C++ 2005 컴파일러의 주요 변경 사항을 참조하십시오.

다음 샘플에서는 C2990 경고가 발생하는 경우를 보여 줍니다.

// C2990c.cpp
// compile with: /c
template<class T>
class A;

template<class T>
struct A2 {
   friend class A;   // C2990
};

// OK
template<class T>
struct B {
   template<class T>
   friend class A;
};