В основном я экспериментирую с полиморфизмом.У меня есть 2 объекта, клиент и сотрудник.у клиента есть имя и жалоба.У сотрудника есть имя и зарплата.
В цикле я беру эти параметры и создаю новую персону для добавления в массив.
Но вот моя проблема: если я ставлю какие-либопробелы в строке, цикл заканчивается до конца.
Person *persons[10];
for (int i = 0; i < sizeof persons;i++)
{
cout<<"Please type 1 for customer or 2 for Employee"<<endl;
int q;
cin>>q;
string name;
int salary;
string complaint;
if (q == 1)
{
cout<<"What is your name?"<<endl;
cin>>name;
cout<<"What is your complaint"<<endl;
cin>>complaint;
personPtr = new Customer(name,complaint);
cout<<"Created customer"<<endl<<endl;
persons[i] = personPtr;
cout<< "added to array"<<endl<<endl;
}
else if(q==2)
{
cout<<"What is your name?"<<endl;
cin>>name;
cout<<"What is your salary"<<endl;
cin>>salary;
personPtr = new Employee(name,salary);
persons[i] = personPtr;
}
else
{
cout<<"Sorry but i could not understand your input. Please try again"<<endl;
i--;
cin>>q;
}
}
delete personPtr;
system("PAUSE");
Есть ли какой-нибудь особый способ включения строк?
Вот классы клиентов и сотрудников для справки.
class Person
{
public:
Person(const string n)
{name = n;}; // initialise the name
virtual void printName();
protected:
string name;
};
class Customer:public Person
{
public:
string complaint;
Customer(string name, string cm)
:Person(name)
{
complaint=cm;
}
virtual void printName();
};
class Employee:public Person
{
public:
int salary;
Employee(string name,int sl)
:Person(name)
{
salary = sl;
}
virtual void printName();
};