Before:
class course
{
public:
virtual void print(){ cout << name << " (" << courseNumber << ") "; }
string getType() { return "course"; }
protected:
string name;
int courseNumber;
};
class lab: public course
{
public:
virtual void print(){ cout << name << " has lab fee $ " << labFee; }
string getType() { return "lab"; }
private:
double labFee;
};
class grad: public course
{
public:
virtual void print(){ cout << name << " has graduate tuition $ " << tuition; }
string getType() { return "grad"; }
private:
double tuition;
};
int main()
{
course * schedule[4];
schedule[0] = new course;
schedule[1] = new lab;
schedule[2] = new grad;
schedule[3] = new course;
for( int index = 0; index < 4; index++ )
{
if( schedule[index]->getType() == "course" )
((course *) schedule[index])->print();
else if( schedule[index]->getType() == "lab" )
((lab *) schedule[index])->print();
else if( schedule[index]->getType() == "grad" )
((grad *) schedule[index])->print();
}
}