problem with pointer to object and STL list
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.