Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // hierarchia klas z uzyciem dziedziczenia wielokrotnego
- #ifndef WORKERMI_H_
- #define WORKERMI_H_
- #include <string>
- class Worker // abstrakcyjna klasa bazowa
- {
- private:
- std::string fullname;
- long id;
- protected:
- virtual void Data() const;
- virtual void Get();
- public:
- Worker() : fullname("brak"), id(0L) {}
- Worker(const std::string &s, long n) : fullname(s), id(n) {}
- virtual ~Worker() = 0; // funkcja czysto wirtualna
- virtual void Set() = 0;
- virtual void Show() const = 0;
- };
- class Waiter : virtual public Worker
- {
- private:
- int panache;
- protected:
- void Data() const;
- void Get();
- 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 : virtual public Worker
- {
- protected:
- enum {inna, alt, kontralt, sopran, bas, baryton, tenor};
- enum { Vtypes = 7 };
- void Data() const;
- void Get();
- private:
- static const char *pv[Vtypes];
- int voice;
- public:
- Singer() : Worker(), voice(inna) {}
- Singer(const std::string & s, long n, int v = inna) : Worker(s, n), voice(v) {}
- Singer(const Worker & wk, int v = inna) : Worker(wk), voice (v) {}
- void Set();
- void Show() const;
- };
- class SingingWaiter : public Singer, public Waiter // incomplete type is not allowed ???
- {
- protected:
- void Data() const;
- void Get();
- public:
- SingingWaiter() {}
- SingingWaiter
- };
- #endif
- #pragma once
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement