Advertisement
Leedwon

Untitled

May 22nd, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | None | 0 0
  1. // hierarchia klas z uzyciem dziedziczenia wielokrotnego
  2.  
  3. #ifndef WORKERMI_H_
  4. #define WORKERMI_H_
  5.  
  6. #include <string>
  7.  
  8. class Worker // abstrakcyjna klasa bazowa
  9. {
  10. private:
  11.     std::string fullname;
  12.     long id;
  13. protected:
  14.     virtual void Data() const;
  15.     virtual void Get();
  16. public:
  17.     Worker() : fullname("brak"), id(0L) {}
  18.     Worker(const std::string &s, long n) : fullname(s), id(n) {}
  19.     virtual ~Worker() = 0; // funkcja czysto wirtualna
  20.     virtual void Set() = 0;
  21.     virtual void Show() const = 0;
  22. };
  23.  
  24. class Waiter : virtual public Worker
  25. {
  26. private:
  27.     int panache;
  28. protected:
  29.     void Data() const;
  30.     void Get();
  31. public:
  32.     Waiter() : Worker(), panache(0) {}
  33.     Waiter(const std::string &s, long n, int p = 0) : Worker(s, n), panache(p) {}
  34.     Waiter(const Worker & wk, int p = 0) : Worker(wk), panache(p) {}
  35.     void Set();
  36.     void Show() const;
  37. };
  38.  
  39. class Singer : virtual public Worker
  40. {
  41. protected:
  42.     enum {inna, alt, kontralt, sopran, bas, baryton, tenor};
  43.     enum { Vtypes = 7 };
  44.     void Data() const;
  45.     void Get();
  46. private:
  47.     static const char *pv[Vtypes];
  48.     int voice;
  49. public:
  50.     Singer() : Worker(), voice(inna) {}
  51.     Singer(const std::string & s, long n, int v = inna) : Worker(s, n), voice(v) {}
  52.     Singer(const Worker & wk, int v = inna) : Worker(wk), voice (v) {}
  53.     void Set();
  54.     void Show() const;
  55. };
  56.  
  57. class SingingWaiter : public Singer, public Waiter // incomplete type is not allowed ???
  58. {
  59. protected:
  60.     void Data() const;
  61.     void Get();
  62. public:
  63.     SingingWaiter() {}
  64.     SingingWaiter
  65. };
  66.  
  67. #endif
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75. #pragma once
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement