Suppose that we have these three classes:
Code:
class A {
private:
int sth;
//.....
public:
virtual int is_class_B (void) = 0;
void print (void) { cout << "I'm in class A" << endl; return;}
int get_sth (void) { return sth; }
//.......
};
class B : public A {
private: //......
public:
int is_class_B (void) { return 1; }
void print (void) { cout << "I'm in class B" << endl; return; }
};
class C : public A {
private: //........
public:
int is_class_B (void) { return 0; }
void print (void) { cout <<"I'm in class C" << endl; return; }
};
Code:
switch (classptr.get_sth ()) {
case 0:
classptr.print (); // use the print func of class A
break;
default:
if (classptr.is_class_B ()) {
classptr.print (); // use the print func of class B
// .....
}
else {
classptr.print (); // use the print func of class C
// ........
}
break;
}
