Advertisement

Class References?

Started by January 14, 2001 07:26 AM
0 comments, last by Ziggy5000 24 years ago
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]
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

This topic is closed to new replies.

Advertisement