【问题标题】:convert ‘double*’ to ‘boost::any*’将‘double*’转换为‘boost::any*’
【发布时间】:2012-11-09 23:40:48
【问题描述】:

我有一个变量boost::any* 项目。我的要求是:

使用可以是 int、double 或任何其他数据类型的值列表分配项目。但在给定时间,数据类型将是唯一的。

问题:

对于单个值,我可以使用 items[index] = value;但是,如果我这样做 item = values;其中 values 是一个双精度数组,它不能自动转换。另外,如果我使用

items = boost::any_cast<boost::any*>(values)

我收到“boost::bad_any_cast”:使用“boost::any_cast”转换失败。

关于如何将双数组转换为boost::any 数组的一些提示将非常有用。

【问题讨论】:

  • 再更新一次,如果我使用 items = reinterpret_cast<:any>(values);程序运行,我也可以分配值。但是 boost::any_cast(this->entries[_index]) 会因 boost 的错误转换给出错误。所以我无法取回这些值。

标签: c++ boost boost-any


【解决方案1】:

它只是无法工作。在double[] 中,双打是连续的。两个双打之间没有空格。大致相同的情况适用于 boost::any[] :两个 any 对象之间没有空格。但是在相邻的 boost::any&lt;&gt; 包装器中存储的两个双精度之间存在空间。

你必须写一个函数。

【讨论】:

    猜你喜欢
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多