我在学校项目中使用Boost :: Variant,并从Variant中提取“浮点类型”。
我尝试过使用std :: string和float,并且字符串工作正常。
boost::variant<std::string, float> var1;
var1 = 123.0F;
var1 = "test";
std::string s1 = boost::get<std::string>(var1);
float f1 = boost::get<float>(var1);
但是当最后一行被运行时,我得到一个boost :: bad_get异常,就像它在Variant中找不到类型float一样?
答案 0 :(得分:2)
它的变种。它当时只能处理一个值。当您致电boost::get
时,变体中没有浮动。
答案 1 :(得分:2)
您期望的更像是元组或融合地图:
的 Live On Coliru 强>
boost::tuple<std::string, float> var1 = boost::make_tuple("test", 123.0f);
std::string s1 = boost::get<0>(var1);
float f1 = boost::get<1>(var1);
的 Live On Coliru 强>
map<
pair<struct name_tag, std::string>,
pair<struct value_tag, float>
> var1 = make_map<name_tag, value_tag>("test", 123.0f);
std::string s1 = at_key<name_tag>(var1);
float f1 = at_key<value_tag>(var1);