Compartir a través de


Error del compilador C3855

"class": el parámetro de tipo "param" no es compatible con la declaración

El compilador encontró parámetros genéricos o de plantilla sin tipo con nombres diferentes. Esto puede ocurrir cuando un parámetro de plantilla especificado en la definición de una especialización de plantilla no es compatible con su declaración.

El ejemplo siguiente genera el error C3855:

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

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

Posible solución:

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

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

El error C3855 también puede ocurrir cuando se usan genéricos:

// 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

Posible solución:

// 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 { };