2010-11-16 58 views
0

有人可以帮我这个简单类的序列在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

你的类是越野车:它会调用未定义的行为,当因为可能'复制或分配时,考虑使用'std :: vector '而不是裸数组。 – 2010-11-16 15:18:50

回答

6

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

如果这不是针对某个班级的,而且允许您使用外部图书馆,考虑查看Boost Serialization图书馆,尤其是如果您需要序列化许多不同的内容。

+0

现在我知道它是什么,谢谢:) – Proclyon 2010-11-16 13:58:35

0

首先,弄清楚你将如何序列化所有的intdoubleThis question有一些提示。请注意,doubleints要复杂得多。即使这个问题及其答案都在C中,任何C++序列化都需要使用相同的中心原则。

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