Ошибка компилятора 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
};