On Sat, Mar 29, 2008 at 3:40 PM, Steven Watanabe <watanabesj@gmail.com> wrote:
AMDG

Robert Dailey wrote:
> It seems that so far we've gotten everything done without RTTI, I
> would hate to introduce it here.

RTTI is not always evil.  It may be less efficient to hash the strings,
but it is not worse from a design perspective.

> I see what you're saying now. Something like this might be in order:
>
> struct Packet
> {
>     virtual PacketId GetId() const = 0;
> };
>
> struct WalkPacket : Packet
> {
>     static const PacketId ID = PID_WALKPACKET;
>     virtual PacketId GetId() const { return ID; }
> };

Yep.  That works.  Just thought I'd point out that this is not so very
different
from RTTI, after all.

In Christ,
Steven Watanabe

Well I'm not 100% sure of the performance impact RTTI will have on the application. What I've read is that RTTI can get very expensive in terms of executable size if you have a lot of classes in your application. Unfortunately I don't think I could get away with using strings since the network is assigning integral values to the packets in order to uniquely identify them. I like the string idea because it doesn't have the repetitive code in each derived class (the overridden GetID method that will be the same in each derived class).