다음을 통해 공유


컴파일러 오류 C3855

'class': 형식 매개 변수 'param'이 선언과 호환되지 않습니다.

컴파일러에서 이름이 다른 형식이 아닌 템플릿 또는 제네릭 매개 변수를 찾았습니다. 템플릿 특수화 정의의 지정된 템플릿 매개 변수가 해당 선언과 호환되지 않는 경우에 발생할 수 있습니다.

다음 샘플에서는 C3855를 생성합니다.

// C3855.cpp
template <int N>
struct C {
   void f();
};

template <char N>
void C<N>::f() {}   // C3855

해결 방법:

// C3855b.cpp
// compile with: /c
template <int N>
struct C {
   void f();
};

template <int N>
void C<N>::f() {}

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

// C3855c.cpp
// compile with: /clr
generic <class T>
ref struct GC1 {
   generic <class U>
   ref struct GC2;
};

generic <class T>
generic <class U>
generic <class V>
ref struct GC1<T>::GC2 { };   // C3855

해결 방법:

// C3855d.cpp
// compile with: /clr /c
generic <class T>
ref struct GC1 {
   generic <class U>
   ref struct GC2;
};

generic <class T>
generic <class U>
ref struct GC1<T>::GC2 { };