преобразовать 'double*' в 'boost::any*'

У меня есть переменная boost::any* items. Мое требование состоит в том, чтобы:

назначать элементы со списком значений, которые могут быть типа int, double или любого другого типа данных. Но в данный момент тип данных будет уникальным.

Проблема:

Для отдельных значений я могу назначить, используя items[index] = value; Но если я делаю item = values; где values ​​представляет собой двойной массив, который не может быть преобразован автоматически. Также, если я использую

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

Я получаю 'boost::bad_any_cast': неудачное преобразование с использованием 'boost::any_cast`.

Некоторые подсказки будут действительно хорошими о том, как я могу преобразовать двойной массив в массив boost::any.


person Pinaki    schedule 09.11.2012    source источник
comment
Еще одно обновление, если я использую items = reinterpret_cast‹boost::any*›(values); программа запускается, и я также могу присвоить значения. Но boost::any_cast‹double›(this-›entries[_index]) выдает ошибку плохого приведения из boost. Поэтому я не могу восстановить значения обратно.   -  person Pinaki    schedule 09.11.2012


Ответы (1)


Это просто не может работать. В double[] двойники являются смежными. Между двумя двойниками нет места. Примерно то же самое относится и к boost::any[] : между двумя any объектами нет места. Но между двумя двойниками, хранящимися внутри соседних boost::any<> оберток, ЕСТЬ пространство.

Вам нужно будет написать функцию.

person MSalters    schedule 09.11.2012