我正在使用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);
}
我尝试了一些操作,例如逐个序列化内部数组,但无法正常工作。 您还知道一些有关此的文档吗?我找到了一些序列化的示例,但是它们非常简单。
谢谢。
编辑
我通过float类型的构造函数更改了malloc。情况是,现在甚至无法编译。
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 *或我缺少什么?