typeid and inheritance question...

From: Franco (awe@CET.COM)
Date: 08/28/97

Hey all,
  I am running into a minor problem, and would like to know the most
elegant way to sidestep it. Currently, circle accepts a new socket,
throws it into the input and output FD sets, and loads the character off
file, attaching it to ->character pointer off the descriptor.
  Well, in C++, with class inheritance, making a instance pointer for
each (character) class in the descriptor is a waste of space, and the
typeid() call would only be useful if thrown into a large switch, which is
rather silly.

(new connection)           pointer     (player classes)
 Descriptor                    /--------->      Player
      |                               /             |
      Player *pl->character   -/        -------------------------------
                                |                     |
                                 Mage           Warrior

  The way that this is done now, since there is just one char_data struct,
is pretty straitforward. However, I would like to be able to pull run time
on the character read from file, and create an instance of the actual class
it belongs to. I need not only to access the class functions (which
I can get around with virtual keywording), but would like to be able to
access class-dependant data types

(new connection)                     (player classes)
 Descriptor                             Player
      |                                             |
      Mage *pl->character       -------------------------------
                      \         |                     |
                       \------>      Mage               Warrior

  Except, i need the mage pointer to be created based on the typeid()
of the class size read from a binary player file.
  Anyone have an elegant way of doing this?

Franco Gasperino
Cutting Edge Communications

     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |

This archive was generated by hypermail 2b30 : 12/08/00 PST