| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | // worker0.h  -- working classes#ifndef WORKER0_H_#define WORKER0_H_#include <string>class Worker   // an abstract base class{private:    std::string fullname;    long id;public:    Worker() : fullname("no one"), id(0L) {}    Worker(const std::string & s, long n)            : fullname(s), id(n) {}    virtual ~Worker() = 0;   // pure virtual destructor    virtual void Set();    virtual void Show() const;};class Waiter : public Worker{private:    int panache;public:    Waiter() : Worker(), panache(0) {}    Waiter(const std::string & s, long n, int p = 0)            : Worker(s, n), panache(p) {}    Waiter(const Worker & wk, int p = 0)            : Worker(wk), panache(p) {}    void Set();    void Show() const;};class Singer : public Worker{protected:    enum {other, alto, contralto, soprano,                    bass, baritone, tenor};    enum {Vtypes = 7};private:    static char *pv[Vtypes];    // string equivs of voice types    int voice;public:    Singer() : Worker(), voice(other) {}    Singer(const std::string & s, long n, int v = other)            : Worker(s, n), voice(v) {}    Singer(const Worker & wk, int v = other)            : Worker(wk), voice(v) {}    void Set();    void Show() const;};#endif
 |