C++ cli 如何将_值枚举从VS2003转换为VS2010 我有这个代码片段,从VS2003,管理C++,我想重写它在2010 C++ +CLI方式,但新的编译器不接受“特技”所有枚举。有人能告诉我如何正确地转换它吗
这是VS 2003中的代码片段:C++ cli 如何将_值枚举从VS2003转换为VS2010 我有这个代码片段,从VS2003,管理C++,我想重写它在2010 C++ +CLI方式,但新的编译器不接受“特技”所有枚举。有人能告诉我如何正确地转换它吗,c++-cli,C++ Cli,这是VS 2003中的代码片段: [Flags] __value enum Features: unsigned int { feature_1 = 1, feature_2 = 2, feature_3 = 4, feature_all = feature_1 | feature_2 | feature_3 // accepted by compiler }; 我试着在VS 2010中这样写:
[Flags]
__value enum Features: unsigned int
{
feature_1 = 1,
feature_2 = 2,
feature_3 = 4,
feature_all = feature_1 | feature_2 | feature_3 // accepted by compiler
};
我试着在VS 2010中这样写:
[FlagsAttribute]
value class enum Features: unsigned int {
feature1 = 1,
feature2 = 2,
feature3 = 4,
feature_all = feature_1 | feature_2 | feature_3 // not accepted by compiler
};
但是第二个肯定不起作用
编译器返回7个错误:(C2332、C2236、3x C2065、C2056和C3115)正确的关键字是enum class,在C++11中也采用:
[FlagsAttribute]
public enum class Features: int {
feature1 = 1,
feature2 = 2,
feature3 = 4,
feature_all = feature1 | feature2 | feature3
};
请注意,我还删除了神秘的下划线,假设您希望使此枚举类型对其他.NET项目可见,并希望它符合CLS,以便不支持未签名类型的语言可以使用它。int是默认值,可以省略。根据需要调整