如何序列化这个类?

时间:2010-11-16 13:48:28

标签: c++ serialization

有人可以帮助我在C ++中序列化这个简单的类:

class State {
public:
    int count;
    Point point;
    double angle;
    Point* possible;
    int possibleSize;
    Line line;
    list<Point> route;

    State() {

    }

    ~State() {
        delete[] possible;
    }

};

// --- Structures

// Line structure (ax + by + c = 0)
struct Line {
    int a;
    int b;
    int c;
};

// Point structure
struct Point {
    int x;
    int y;
};

我不能使用任何第三方类或库,我需要将其序列化为字节数组(或字符串)。有人可以写怎么样?我只是不知道如何开始。

非常感谢。

2 个答案:

答案 0 :(得分:6)

序列化并不神奇。您需要做的就是编写一个函数,以可预测的方式将类的每个变量成员保存到一个数组中,并使用匹配函数来读取这样的数组并设置正确的成员。

如果这不是一个类,你可以使用外部库,考虑查看Boost Serialization库,特别是如果你需要序列化很多不同的东西。

答案 1 :(得分:0)

首先,弄清楚如何序列化所有intdoubleThis question有一些提示。请注意,doubleint更棘手。即使这个问题及其答案都在C语言中,任何C ++序列化都需要使用相同的中心原则。

您的两个成员看起来像可变长度列表。序列化其中一个元素的好方法是序列化元素的数量(possibleSizeroute.size()),然后一个元素一次一个。