You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual C++ 初始化enum class类型失败出现报错该如何解决

问题原因与解决方案

你遇到的编译错误由两个可复现的问题导致:

1. 结构体定义遗漏结束分号

C++要求struct、class、enum等自定义类型的定义末尾必须添加分号作为结束标记。你的代码中struct something的闭合大括号后未补充分号,会导致编译器语法解析错乱,直接触发C2238、C2059两类语法错误,解析异常后还会连锁触发FOO类型识别失败的C2653错误。

2. 未启用C++11及更高版本标准支持

enum class语法、类内成员默认初始化都是C++11版本新增的特性,MSVC默认可能未启用对应标准支持,即便修复语法问题也可能编译失败。


修复后可正常编译的完整代码:

enum class FOO
{
  A,B,C
};

struct something
{
  FOO abc = FOO::A; 
}; // 此处补充分号

int main(){
  something _something;
  return 0;
}

MSVC开启C++标准支持操作步骤:

  • 右键点击当前项目,打开「属性」面板
  • 依次进入「配置属性」-「C/C++」-「语言」分类
  • 将「C++ 语言标准」选项修改为ISO C++11 标准 (/std:c++11)或更高版本(如C17、C20均可)
  • 重新生成项目即可完成编译

内容的提问来源于stack exchange,提问作者inpinseptipin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:48:03