【发布时间】:2019-01-23 04:02:59
【问题描述】:
我定义了以下类型的d
typedef boost::variant<string, double> flex_String_Double;
map<string, flex_String_Double> FDParam;
FDParam 的形式如下:
{"setNumber", 3}
{"Money", 3.152}
{"Fight", "No"}
我想做的是(期望获得6.152):
cout << FDParam["setNumber"] + FDParam["Money"] << endl;
但是,此命令不起作用并给我以下错误:
Invalid operands to binary expression ('std::__1::map<std::__1::basic_string<char>, boost::variant<std::__1::basic_string<char>, double>, std::__1::less<std::__1::basic_string<char> >, std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, boost::variant<std::__1::basic_string<char>, double> > > >::mapped_type' (aka 'boost::variant<std::__1::basic_string<char>, double>') and 'double')
谁能帮我解决这个问题?
【问题讨论】:
-
“setNumber”等是否在引号中?可以发minimal reproducible example吗?
-
是的。其实 setNumber, Money, Fight 都是用 "" 的,因为它们是字符串...我会修改它们。
标签: c++ dictionary boost variant