Udostępnij za pomocą


Błąd kompilatora C3381

"identifier": specyfikatory dostępu do zestawów są dostępne tylko w kodzie skompilowanym za pomocą /clr opcji

Uwagi

Typ został zadeklarowany lub zdefiniowany za pomocą specyfikatora dostępu, który jest dozwolony tylko w kodzie skompilowanym przy użyciu polecenia /clr.

Ten błąd może wynikać z zagubionego publicsłowa kluczowego , protectedlub private brakującego dwukropka (:) po specyfikatorze dostępu w obrębie elementu class lub struct.

W języku C++/interfejsie wiersza polecenia typy natywne mogą być widoczne poza zestawem, ale można określić tylko dostęp do zestawów dla typów natywnych w /clr kompilacji. Aby uzyskać więcej informacji, zobacz Temat Widoczność/clr

Przykład

Poniższy przykład generuje kod C3381. Aby rozwiązać ten problem, najpierw usuń public specyfikator z class A definicji lub skompiluj /clr przy użyciu opcji . Następnie dodaj dwukropek po private , aby określić dostęp dla elementu class B {} b;. Dzieje się tak, ponieważ klasa zagnieżdżona nie może mieć specyfikatora dostępu do zestawu w ramach jego deklaracji.

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