// Modifies code from text using a vector instead of an array #include #include #include using namespace std; class TradesPerson { public: virtual void sayHi() { cout << "Hi from on top." << endl; } }; class Tinker : public TradesPerson { public: virtual void sayHi() { cout << "Hi, I tinker." << endl; } }; class Tailor : public TradesPerson { public: virtual void sayHi() { cout << "Hi, I tailor." << endl;} }; int main(int argc, char *argv[]) { vector tradePeople; for(int i = 0; i < 10; i++){ int which = 1 + rand() % 3; switch(which){ case 1: tradePeople.push_back(new TradesPerson); break; case 2: tradePeople.push_back(new Tinker); break; case 3: tradePeople.push_back(new Tailor); break; } } for(vector::iterator it = tradePeople.begin(); it != tradePeople.end(); ++it) { (*it) -> sayHi(); // run time binding } for(vector::iterator it = tradePeople.begin(); it != tradePeople.end(); ++it) { delete (*it); } system("PAUSE"); return EXIT_SUCCESS; }