2

我们可以显式类型转换要存储在 boost varint 中的值吗?

例子:

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。有没有办法直接更改 which_ 中的值(类变体中的私有变量)或显式指定要使用的数据类型?

问候安基思

4

1 回答 1

7

这是可能的,但它不会按预期工作。

在变体上,关键思想是类型充当key。当您实际请求给定类型(使用boost::get或访问)时,会variant选择与键匹配的第一个类型,因此此处asd将被傲慢地忽略。

如果您需要为不同目的存储多个整数,您可以使用BOOST_STRONG_TYPEDEF创建不同的类整数类并使用variant.

于 2011-04-28T06:28:39.593 回答