Я работаю с boost и двумерным массивом чисел с плавающей точкой, выраженных в виде двойного указателя (float **). К моменту, когда я выделяю памяти две загрузки значения (при десериализации), я не знаю и не нашел никакой информации о том, как это сделать.
int i;
array = (float**) malloc(N * sizeof(float*));
assert(array == NULL);
for (i=0; i<N; i++) {
array[i] = (float*) malloc(N * sizeof(float));
assert(array[i] == NULL);
}
Я пробовал несколько вещей, таких как сериализация один за другим массивов внутри, но не работает.
Также вы знаете документацию по этому поводу? Я нашел несколько примеров сериализации, но они очень просты.
Спасибо.
EDIT
Я изменил malloc с помощью конструкторов типа float. Дело в том, что сейчас невозможно даже скомпилировать.
if (Archive::is_loading::value)
{
assert(array == NULL);
array = new float*[N];
int i;
for (i=0; i<N; i++) {
assert(array[i] == NULL);
array[i] = new float[M];
}
}
ar & array;
Это дает мне следующую ошибку:
error: request for member ‘serialize’ in ‘t’, which is of non-class type ‘float*’
t.serialize(ar, file_version);
Невозможно сериализовать float * или я что-то упустил?