I want to make a list of pointers to Member objects and then print the list using polymorphic function print. i want to use polymorphism - that's why i think i have to use pointer to object. The program crashes with segmentation fault.Code:#include <iostream> #include <string> #include <list> using namespace std; class Member { string name; public: Member(string name) { this->name = name; }; Member() { string line; cout << "Give name: "; getline(cin, line); name = line; } virtual void print() { cout << name << endl; } }; class Employee:public Member { string salary; public: Employee(string name, string salary):Member(name) { this->salary = salary; }; Employee():Member() { string line; cout << "Give salary: "; getline(cin, line); salary = line; } void print() { Member::print(); cout << salary << endl; }; }; int main () { list<Member *> mlist; int ans; string buf; cout << "What do you want to put?" << endl << "Member (1) - Employee (2) ? : "; cin >> ans; getline(cin,buf); switch (ans) { case 1 : { Member memtest; mlist.push_back(&memtest); break; } case 2 : { Employee emptest; mlist.push_back(&emptest); break; } default : cout << "Wrong Choice!" << endl; break; }; list<Member *>::iterator iter; for (iter = mlist.begin(); iter != mlist.end(); iter++) (*iter)->print(); return 0; }