如何使用BOOST C ++对表示为指针的矩阵进行序列化/反序列化

时间:2018-11-19 09:23:27

标签: c++ pointers boost boost-serialization

我正在使用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 *或我缺少什么?

0 个答案:

没有答案