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;
}
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.