有人可以帮助我在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;
};
我不能使用任何第三方类或库,我需要将其序列化为字节数组(或字符串)。有人可以写怎么样?我只是不知道如何开始。
非常感谢。
答案 0 :(得分:6)
序列化并不神奇。您需要做的就是编写一个函数,以可预测的方式将类的每个变量成员保存到一个数组中,并使用匹配函数来读取这样的数组并设置正确的成员。
如果这不是一个类,你可以使用外部库,考虑查看Boost Serialization库,特别是如果你需要序列化很多不同的东西。
答案 1 :(得分:0)
首先,弄清楚如何序列化所有int
和double
。 This question有一些提示。请注意,double
比int
更棘手。即使这个问题及其答案都在C语言中,任何C ++序列化都需要使用相同的中心原则。
您的两个成员看起来像可变长度列表。序列化其中一个元素的好方法是序列化元素的数量(possibleSize
或route.size()
),然后一个元素一次一个。