for (int i=0; i < SomeValue; i++)
{
Class_P *p; //parent class
int SomeID;
p = (Class_p)* some_param;
SomeID = p->getID;
####
class SystemCase{
public:
SystemCase getInstance(Class_P *p){
switch(p->getID()){
case FIRST_CASE:
return FirstCase(p);
...
}
virtual SomeArrayType runMethod();
};
class FirstCase{
public:
SomeArrayType runMethod(){ ... }
};
##
##
for (int i=0; i < SomeValue; i++)
{
Class_P *p; //parent class
int SomeID;
p = (Class_p)* some_param;
//SomeID = p->getID() isn't needed since we look at this in SystemCase
SystemCase sc = SystemCase::getInstance(p);
SomeArray[i].value = sc.runMethod();
}