我们可以明确地对存储在boost varaint中的值进行类型转换吗?
示例:
typedef int abc;
typedef int asd;
typedef boost::variant<abc, char, asd, float> link_try1;
int main()
{
link_try1 qw;
qw = static_cast<asd>(1234);
printf("value of which is:%d", qw.which());
return 0;
}
这里我希望which()函数重新启动3但它总是重新编译0。 有没有办法直接更改其中的值_(类变体中的私有变量)或显式指定要使用的数据类型?
此致 Ankith
答案 0 :(得分:7)
这是可能的,但它不会按预期工作。
关于变体的关键思想是该类型充当键。当您实际请求给定类型(使用boost::get
或访问)时,variant
中与该键匹配的第一个类型将被选中,因此这里asd
将被傲慢地忽略。
如果您需要为不同目的存储多个整数,可以使用BOOST_STRONG_TYPEDEF
创建不同的类似整数的类,并使用variant
中的类。