
On Fri, Mar 28, 2008 at 7:26 PM, Steven Watanabe
AMDG
Robert Dailey wrote:
The problem is that the type of the packet is not known until runtime. This makes it very difficult to make things "type safe" at compile time. What Steven has presented is about as type-safe as you can make it. However, the system does not prevent you from mismatching ID's with actual packet types, but that's just a natural problem with data driven designs. You could put the ID in the base Packet type. That should minimize the chances of mismatch.
Right now I'm already putting the ID as a static constant variable in each derived type. I don't see a way to set the ID in the base Packet class, since that would more than likely require CRTP or something. From what I have seen the Packet base class cannot be a template. I suppose you could do this if you used 3 levels of inheritance, but that seems ugly.
original type of the packet, since what is being passed in (the ID) is
not known at compile time, as I've already stated. Right now there is no possible way to have a factory that returns the It seems like a problem in multiple dispatching, which C++ just doesn't support very well natively.
In Christ, Steven Watanabe