Megosztás a következőn keresztül:


C3856-os fordítási hiba

"típus": az osztály nem osztálytípus

Megjegyzések

Ennek a hibának a leggyakoribb oka az, hogy a definíció helyén általánosabb vagy sablonparaméter-listák találhatók, mint a deklarálási ponton.

Példák

A következő példa C3856-ot hoz létre:

// C3856.cpp
template <class T>
struct S {
   template <class T1>
   struct S1;
   void f();
};

template <class T>   // C3856
template <class T1>
template <class T2>  // extra template parameter list in definition
struct S<T>::S1{};

Lehetséges megoldás:

// C3856b.cpp
// compile with: /c
template <class T>
struct S {
   template <class T1>
   struct S1;
   void f();
};

template <class T>
template <class T1>
struct S<T>::S1{};

A C3856 általános használat esetén is előfordulhat:

// C3856c.cpp
// compile with: /clr
generic <class T>
ref struct GS {
   generic <class U>
   ref struct GS2;
};

generic <class T>
generic <class U>
generic <class V>
ref struct GS<T>::GS2 {};   // C3856

Lehetséges megoldás:

// C3856d.cpp
// compile with: /clr /c
generic <class T>
ref struct GS {
   generic <class U>
   ref struct GS2;
};

generic <class T>
generic <class U>
ref struct GS<T>::GS2 {};