Ik ben bezig met een opdracht over inheritence. Alleen ik maak nu een domme fout denk ik.
Ik heb een dierentuin met daarin een map met werknemers map. Daar gooi ik oppasser, administrateurs en managers in, die geerft hebben van werknemer. Kan dat of moet ik voor elk een aparte map gebruiken? Want ik krijg nu het probleem als ik in de map van werknemers bij iedereen 'getSalaris()' opvraag, die dus in elke soort werknemer staat en bij elk de verschillende salarissen teruggeeft, dat hij dus 'getSalaris' in werknemer probeert te vinden...waar hij dus niet is.
Hoe moet ik dit nu aanpakken? Moet ik dynamic_cast gebruiken misschien en hoe dan?
Hieronder wat files
Alvast bedankt
.modbreak: Codetags toegevoegd, denk daar voortaan zelf aan!
Ik heb een dierentuin met daarin een map met werknemers map
Hoe moet ik dit nu aanpakken? Moet ik dynamic_cast gebruiken misschien en hoe dan?
Hieronder wat files
Alvast bedankt
C++:
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
| // Oppasser.h #ifndef OPPASSER_H #define OPPASSER_H #include <string> #include <iostream> #include "Werknemer.h" #include "Kooi.h" #include "Dier.h" using namespace std; class Oppasser : public Werknemer { private: Kooi * kooi; public: Oppasser(int, string, int, Kooi*); int getSalaris(); }; #endif OPPASSER_H // Oppasser.cc #include "Oppasser.h" Oppasser::Oppasser(int nummer, string naam, int leeftijd, Kooi * kooi) : Werknemer(nummer, naam, leeftijd) { this->kooi = kooi; } int Oppasser::getSalaris(){ return (20000 + (kooi->aantalDieren() * 1000)); } // Dierentuin.cc #include <assert.h> #include "Dierentuin.h" #include "Dier.h" #include "Werknemer.h" #include "Administrateur.h" #include "Oppasser.h" #include "Manager.h" Dierentuin::Dierentuin(string naam) { beschikbareDierNummers = new vector<int>; beschikbareWerknemerNummers = new vector<int>; dieren = new map<int, Dier *>; kooien = new map<string, Kooi *>; werknemers = new map<int, Werknemer *>; } ----------------------------- stukje overgeslagen ----------------------------- int Dierentuin::getSalarisPost(){ int totaal; for(map<int, Werknemer *>::iterator iter = werknemers->begin(); iter != werknemers->end(); ++iter){ //hioer vroeg ik dus getSalaris(); } return totaal; } |
.modbreak: Codetags toegevoegd, denk daar voortaan zelf aan!
[ Voor 10% gewijzigd door .oisyn op 28-10-2003 22:25 ]