编译器错误 C3381
“identifier”:程序集访问说明符只有在用 /clr 选项编译的代码中才可用
类型是使用访问说明符声明或定义的,只有在使用 /clr
编译的代码中才允许使用访问说明符。
备注
此错误可能是由于错误放置 public
、protected
或 private
关键字,或 class
或 struct
中的访问说明符后面缺少冒号 (:
) 而导致的。
在 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
};