Skip to main content
gamedev.net
🔒 Locked

Class References?

Started by Ziggy5000 Jan 14, 2001 at 7:26 AM 0 replies 500+ views
Original Post
Ziggy5000
Ziggy5000
Ok I don't know if this can be done... but if it can how can it be done? I want to be able to make new classes (using the new operator) using a single function and a table of "references" to classes. Here is what I mean.... Say I have 5 classes derived from CGameUnit, I want to do this:
  
CGameUnit *MakeUnit(DWORD id)
{
switch (id)
{
case 0:
return new CFlyerUnit;
break;

case 1:
return new CGroundUnit;
break;

// etc...

}
  
you see where I'm going (right?)... Here is the catch -> I don't want to have to write a new (or rewrite) MakeUnit function every time I add a class... So how can I make a table of refrences to classes so I can simply do this...
  
// PSEUDOCODE ON

CGameUnit *MakeUnit(DWORD id)
{
 Get Reference Entry from table....
 (maybe a table of class pointers? don't know...)
 return new "ReferencePointer";
}
// PSEUDOCODE OFF

  
Any ideas? or if I need to explain better just say so... ill-lusion.com
ziggy@ill-lusion.com Edited by - Ziggy5000 on January 14, 2001 8:42:47 AM
laxdigital.com
[email=ziggy@laxdigital.com]ziggy@laxdigital.com[/email]
Jumpster
Jumpster
I understand what you''re saying now, I think.

Try this...

You want a table of references, right?

  
CGAMEUNIT* Units;

// Somewhere in code this is done...?

Units = new CGAMEUNIT[UnitTypeCount];
Units[0] = new CFLYERUNIT;
Units[1] = new CGROUNDUNIT;


CGAMEUNIT* MakeUnit(DWORD which)
{
if (which > 0 && which < UnitTypeCount)
return Units[which]->Clone();
}


Then, create a new Clone() method for each unit type that creates a copy of itself.

Regards,
Jumpster
Regards,JumpsterSemper Fi

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.