{
cout << "Name:" << m_fullName << endl;
cout << "Employee ID:" << m_lId << endl;
}
void Get()
{
getline( cin, m_fullName );
cout << "Enter worker's ID:";
cin >> m_lId;
while ( '\n' != cin.get() )
{
continue;
}
}
private:
string m_fullName;
long m_lId;
};
Worker::~Worker()
{
}
class Waiter : virtual public Worker
{
public:
Waiter() : Worker(), m_nPanache( 0 )
{
}
Waiter( const string& Name, long Id, int p = 0 ) : Worker( Name, Id ), m_nPanache( p )
{
}
Waiter( const Worker& rWorker, int p = 0 ) : Worker( rWorker ), m_nPanache( p )
{
}
void Set()
{
cout << "Enter waiter's name:";
Worker::Get();
Get();
}
void Show() const
{
cout << "Category:waiter" << endl;
Worker::Data();
Data();
}
protected:
void Data() const
{
cout << "Panache rating:" << m_nPanache << endl;
}
void Get()
{
cout << "Enter waiter's Panache rating:";
cin >> m_nPanache;
while ( '\n' != cin.get() )
{
continue;
}
}
private:
int m_nPanache;
};
class Singer : virtual public Worker
{
public:
Singer() : Worker(), voice( 0 )
{
}
Singer( const string& Name, long Id, int v = 0 ) : Worker( Name, Id ), voice( v )
{
}
Singer( const Worker& rWorker, int v = 0 ) : Worker( rWorker ), voice( v )
{
}
void Set()
{
cout << "Enter singer's name:";
Worker::Get();
Get();
}
void Show() const
{
cout << "Category:singer" << endl;
Worker::Data();
Data();
}
protected:
enum{ other, alto, contralto, soprano, base, baritone, tenor };
enum{ Vtypes = 7 };
void Data() const
{
cout << "Vocal range:" << pv[ voice ] << endl;
}
{
cout << "Enter number for singer's vocal range:" << endl;
int i;
for ( i = 0; i < Vtypes; i++ )
{
cout << i << ":" << pv[ i ] << " ";
if ( 3 == i % 4 )
{
cout << endl;
}
}
if ( 0 != i % 4 )
{
cout << endl;
}
cin >> voice;
while ( '\n' != cin.get() )
{
continue;
}
}
private:
static char* pv[ Vtypes ];
int voice;
};
char* Singer::pv[ Singer::Vtypes ] = { "other", "alto", "contralto", "Soprano", "bass", "baritone", "tenor" };
class SingingWaiter : public Singer, public Waiter
{
public:
SingingWaiter(){}
SingingWaiter( const string& Name, long Id, int p = 0, int v = other )
: Worker( Name, Id ), Waiter( Name, Id, p ), Singer( Name, Id, v )
{
}
SingingWaiter( const Worker& rWorker, int p = 0, int v = other )
: Worker( rWorker ), Waiter( rWorker, p ), Singer( rWorker, v )
{
}
SingingWaiter( const Waiter& rWaiter, int v = other )
: Worker( rWaiter ), Waiter( rWaiter ), Singer( rWaiter, v )
{
}
SingingWaiter( const Singer& rSinger, int p = 0 )
: Worker( rSinger ), Waiter( rSinger, p ), Singer( rSinger )
{
}
void Set()
{
cout << "Enter singing waiter's name:";
Worker::Get();
Get();
}
void Show() const
{
cout << "Category:singing waiter" << endl;
Worker::Data();
Data();
}
protected:
void Data() const
{
Singer::Data();
Waiter::Data();
}
void Get()
{
Waiter::Get();
Singer::Get();
}
};
const int SIZE = 5;
int _tmain(int argc, _TCHAR* argv[])
{
Worker* loals[ SIZE ];
int ct;
for ( ct = 0; ct < SIZE; ct++ )
{
char choice;
cout << "Enter the employee category:" << endl;
cout << "w:waiter s:singer " << "t:sing waiter q:quit" << endl;
cin >> choice;
while ( NULL == strchr( "wstq", choice ) )
{
cout << "Please enter a, w, s, t, or, q:";
cin >> choice;
}
if ( 'q' == choice )
{