int main() { // Client code HinduFemale* hinduGirl = new HinduFemale; MuslimFemale* muslimGirl = new MuslimFemale; MuslimRitual muslimRitual; MuslimAdapter* adaptedHindu = new MuslimAdapter (hinduGirl); muslimRitual.carryOutRitual (muslimGirl); muslimRitual.carryOutRitual (adaptedHindu); delete adaptedHindu; delete hinduGirl; delete muslimGirl; return 0; }
int main() { HinduFemale* hinduGirl = new HinduFemale; MuslimFemale* muslimGirl = new MuslimFemale; MuslimRitual muslimRitual; // muslimRitual.carryOutRitual (hinduGirl); // Will not compile of course since the parameter must be of type Muslim*. MuslimAdapter* adaptedHindu = new MuslimAdapter (hinduGirl); // hinduGirl has adapted to become a Muslim! muslimRitual.carryOutRitual (muslimGirl); muslimRitual.carryOutRitual (adaptedHindu); // So now hinduGirl, in the form of adaptedHindu, participates in the muslimRitual! // Note that hinduGirl is carrying out her own type of ritual in muslimRitual though. delete adaptedHindu; delete hinduGirl; delete muslimGirl; return 0; }