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

C++初始化std::map<string,bool>报错无匹配构造函数如何解决?

问题原因
  • 报错核心为初始化列表的键类型不匹配:C++语法中单引号(')仅可用于包裹单个字符的char类型字面量,你代码中用单引号包裹的'0_0'属于多字符字面量,实际类型为int,无法隐式转换为std::map要求的std::string类型键。
  • 类型不匹配导致整个初始化列表无法匹配std::map接收std::initializer_list的构造函数,编译器因此抛出「无匹配构造函数」的错误。
解决方法

把初始化列表中所有键的单引号替换为双引号(双引号是C风格字符串的标识,可隐式转换为std::string),修改后代码如下:

std::map<std::string, bool> action_map = { 
    {"0_0", true}, {"0_1", false}, {"0_2", false}, {"0_3", false}, {"0_4", true},
    {"1_0", true}, {"1_1", false}, {"1_2", false}, {"1_3", true},
    {"2_0", true}, {"2_1", false}, {"2_2", false}, {"2_3", true},
    {"3_0", true}, {"3_1", false}, {"3_2", false}, {"3_3", true}
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 12:15:08