Поделиться через


Ошибка компилятора C3381

"идентификатор": описатели доступа к сборке доступны только в коде, скомпилированном с параметром /clr

Тип был объявлен или определен с помощью описателя доступа, который разрешен только в коде, скомпилированном с помощью /clr.

Замечания

Эта ошибка может привести к неправильному publicзначению или protectedключевому слову или private отсутствующим двоеточием (:) после описатель доступа в пределах class или struct.

В C++/CLI собственные типы могут быть видимы за пределами сборки, но в компиляции можно указать только доступ к сборке /clr для собственных типов. Дополнительные сведения см. в разделе "Видимость типов" и /clr (компиляция среды CLR).

Пример

В следующем примере создается C3381. Чтобы исправить его, сначала удалите public описателя из class A определения или скомпилируйте с помощью /clr параметра. Затем добавьте двоеточие после private указания доступа.class B {} b; Это связано с тем, что вложенный класс не может иметь описатель доступа к сборке в рамках его объявления.

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