【发布时间】:2015-10-08 08:23:00
【问题描述】:
我正在寻找任何策略,以了解何时有人在某些已序列化的类中添加数据成员而忘记对其进行序列化。
例如,在以下类中添加了bar,但未在访问结构中序列化。
// In implementation library
class A {
public:
struct access;
A(float f, int b) : foo(f), bar(b) {}
private:
float foo;
int bar; // A user just 'added' bar data member
};
// In serialization library
struct A::access {
template <class Archive>
static void serialize(Archive &ar, A &a, const unsigned int) {
ar & BOOST_SERIALIZATION_NVP(a.foo);
// bar serialization is missing here but compiler does not complain
}
};
例如,编译器在编译序列化库时会不会抛出错误?
目前,我想出的想法是添加一些单元测试来判断序列化/反序列化场景是否会给出正确的行为。
我正在寻找一些更智能、一些简单的方法,而不需要复杂的反射技术(我不能在我的实现库中使用 boost)。
【问题讨论】:
标签: c++ serialization boost c++03