Teilen über


Compilerfehler C3856

'type': Klasse ist kein Klassentyp.

Bemerkungen

Die häufigste Ursache für diesen Fehler ist, wenn es allgemeinere oder Vorlagenparameterlisten an der Definitionsstelle gibt, als es zum Zeitpunkt der Deklaration vorhanden war.

Examples

Im folgenden Beispiel wird C3856 generiert:

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

Mögliche Lösung:

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

C3856 kann auch bei Verwendung von Generika auftreten:

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

Mögliche Lösung:

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