다음을 통해 공유


컴파일러 오류 C2990

'class': 클래스 형식으로 이미 선언된 비클래스 형식

제네릭 또는 템플릿이 아닌 클래스는 제네릭 또는 템플릿 클래스를 다시 정의합니다. 헤더 파일에서 충돌이 있는지 확인합니다.

다음 샘플에서는 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

Visual Studio 2005용 Microsoft C++ 컴파일러의 호환성이 손상되는 변경으로 인해 C2990이 발생할 수도 있습니다. 이제 컴파일러에서 템플릿 사양과 관련하여 동일한 형식에 대한 여러 선언이 동일해야 합니다.

다음 샘플에서는 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;
};