编译器错误 C3381

“identifier”:程序集访问说明符只有在用 /clr 选项编译的代码中才可用

类型是使用访问说明符声明或定义的,只有在使用 /clr 编译的代码中才允许使用访问说明符。

备注

此错误可能是由于错误放置 publicprotectedprivate 关键字,或 classstruct 中的访问说明符后面缺少冒号 (:) 而导致的。

在 C++/CLI 中,尽管本机类型可以在程序集外部看到,但只能在 /clr 编译中为本机类型指定程序集访问。 有关详细信息,请参阅类型可见性/clr(公共语言运行时编译)

示例

以下示例生成 C3381。 若要修复此问题,首先从 class A 定义中删除 public 说明符,或使用 /clr 选项进行编译。 接下来,在 private 之后添加冒号以指定 class B {} b; 的访问。 这是因为嵌套类不能将程序集访问说明符作为其声明的一部分。

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