-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHospitalPROF.cpp
More file actions
114 lines (95 loc) · 2.49 KB
/
Copy pathHospitalPROF.cpp
File metadata and controls
114 lines (95 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include<iostream>
using namespace std;
class Disciplina
{
private:
int cu;
public:
const int& get_cu() const { return cu; }
virtual ~Disciplina() {}
protected:
Disciplina(int cu) : cu(cu) {}
};
class Ostetricia : public Disciplina
{
public:
Ostetricia() : Disciplina(77) {}
virtual ~Ostetricia() {}
};
class Cardiologia : public Disciplina
{
public:
Cardiologia() : Disciplina(88) {}
};
class Persona
{
private:
string cf;
public:
Persona(const string& cf) : cf(cf) {}
virtual ~Persona() {}
const string& get_cf() const { return cf; }
};
class Medico : public Persona
{
private:
Disciplina* disciplina;
public:
Medico(const string& cf, Disciplina* disciplina) : Persona(cf), disciplina(disciplina) {}
Disciplina* get_disciplina() const { return disciplina; }
virtual ~Medico() {}
};
class VisitaMedica
{
private:
int turno;
Medico* medico;
Persona** persone;
size_t n_persone;
public:
VisitaMedica(const int& turno, Medico* medico, const size_t& n_persone)
: turno(turno), medico(medico), n_persone(n_persone)
{
persone = new Persona*[n_persone];
for (size_t i = 0; i < n_persone; i++)
persone[i] = nullptr;
}
const size_t& get_n_persone() const { return n_persone;}
Persona** get_persone() const { return persone; }
Medico* get_Medico() const { return medico; }
bool inserisci_persona(Persona* persona)
{
for (size_t i = 0; i < n_persone; i++)
{
if (persone[i] == nullptr)
{
persone[i] = persona;
return true;
}
}
return false;
}
};
int main()
{
size_t n_discipline = 2;
size_t n_persone = 5;
size_t n_visite = 2;
Disciplina** discipline = new Disciplina * [n_discipline];
Persona** persone = new Persona * [n_persone];
VisitaMedica** visite = new VisitaMedica * [n_visite];
//inizializzazione
discipline[0] = new Ostetricia();
discipline[1] = new Cardiologia();
//cout << discipline[0]->get_cu() << " " << typeid(*discipline[0]).name() << endl;
persone[0] = new Persona("MRG65");
persone[1] = new Persona("GLP54");
persone[2] = new Medico("STF74", discipline[0]);
persone[3] = new Medico("HGF66", discipline[0]);
persone[4] = new Medico("HJI44", discipline[1]);
//cout << persone[4]->get_cf() << " "
//<< typeid( *((dynamic_cast<Medico*>(persone[4]))->get_disciplina()) ).name() << endl;
visite[0] = new VisitaMedica(1, dynamic_cast<Medico*> (persone[3]), 2);
cout << (visite[0]->get_Medico()->get_cf()) << endl;
return 0;
}