Teilen über


Compilerfehler C3381

'Identifier': Assemblyzugriffsbezeichner sind nur in Code verfügbar, der mit einer /clr-Option kompiliert wurde.

Hinweise

Ein Typ wurde mithilfe eines Zugriffsbezeichners deklariert oder definiert, der nur in codekompiliert mithilfe von /clr.

Dieser Fehler kann sich aus einem falsch eingefügten public, protectedoder Schlüsselwort oder private einem fehlenden Doppelpunkt (:) nach einem Zugriffsbezeichner innerhalb eines class oder .struct

In C++/CLI können systemeigene Typen außerhalb einer Assembly sichtbar sein, Sie können jedoch nur den Assemblyzugriff für systemeigene Typen in einer /clr Kompilierung angeben. Weitere Informationen finden Sie unter Typsichtbarkeit und /clr (Common Language Runtime Compilation).

Beispiel

Im folgenden Beispiel wird C3381 generiert. Um dies zu beheben, entfernen Sie zuerst den public Bezeichner aus der class A Definition, oder kompilieren Sie ihn mithilfe der /clr Option. Fügen Sie als Nächstes einen Doppelpunkt hinzu private , um den Zugriff für class B {} b;. Das liegt daran, dass eine geschachtelte Klasse keinen Assemblyzugriffsbezeichner als Teil der Deklaration haben kann.

// C3381.cpp
// compile with: /c
public class A {   // C3381
    private class B {} b;   // C3381
};