2012-11-09 108 views
0

我有一個變量boost::any*項。我的要求是:將'double *'轉換爲'boost :: any''

指定具有int,double或任何其他數據類型的值列表的項目。但是在特定時間,數據類型將是唯一的。

問題:

對於單值I可以使用項[索引] =值分配;但是,如果我做item =價值;其中values是一個double數組,它不能自動投射。另外,如果我使用

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

我收到'boost :: bad_any_cast':使用'boost :: any_cast`失敗的轉換。

一些提示將真的很棒,我怎樣才能投出一個雙數組boost::any陣列。

+0

還有一次更新,如果我使用 項=的reinterpret_cast (值); 該程序運行,我也可以分配值。 但是 boost :: any_cast (this-> entries [_index]) 給出錯誤的強制轉換。所以我無法恢復價值。 – Pinaki

回答

1

它只是不能工作。在double[]中,雙打是連續的。兩個雙打之間沒有空間。大致相同的情況適用於boost::any[]:兩個any對象之間沒有空間。但是在相鄰的boost::any<>包裝內存儲了兩個雙打之間的空間。

你必須寫一個函數。

+0

好的......謝謝。 – Pinaki