Ik heb meerdere dierentuinen waar vrijkaartjes voor zijn. De class BOND is een bond die voor de uitgave en inname zorgt. En van deze bond mag er maar 1 zijn.
Ik krijg wanneer ik in dierentuin 'bond = BOND::Instance();' aanroep een error dat die BOND::instance niet kent. Wat is het probleem...moet ik hem met 'bond = BOND.Instance();' aanroepen ?
Ik krijg wanneer ik in dierentuin 'bond = BOND::Instance();' aanroep een error dat die BOND::instance niet kent. Wat is het probleem...moet ik hem met 'bond = BOND.Instance();' aanroepen ?
code:
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
| // BOND.cc
#include "BOND.h"
#include <cstdlib>
#include <string>
#include <ctime>
#include <assert.h>
#include <set>
#include <map>
#include <iostream>
BOND* BOND::onlyInstance_ = NULL;
BOND* BOND::Instance(){
if(onlyInstance_ == NULL)
onlyInstance_ = new BOND;
return onlyInstance_;
}
BOND::BOND(){
vrijkaartjes = new set<long>;
srand((unsigned)time ( 0 ));
}
long BOND::getKaartje(){
bool goedkaartje = false;
long kaartnummer;
while (!goedkaartje){
long random;
int temp1,temp2;
temp1=rand();
temp2=rand();
random= ((long)temp1<<16)|(long)temp2;
if (vrijkaartjes->find(random) == vrijkaartjes->end()){
goedkaartje=true;
kaartnummer = random;
vrijkaartjes->insert(kaartnummer);
}
}
return kaartnummer;
}
void BOND::putKaartje(long kaartje){
if (vrijkaartjes->find(kaartje) != vrijkaartjes->end()){
vrijkaartjes->erase(kaartje);
cout << "BOND: Kaartje succesvol ingeleverd.\n";
}else{
cout << "BOND: Kaartje gestolen!\n";
}
} |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| // BOND.h
#include <set>
#include <cstdlib>
#ifndef BOND_H
#define BOND_H
using namespace std;
class BOND {
public:
static BOND * Instance();
long getKaartje();
void putKaartje(long kaartje);
protected:
BOND();
BOND(const BOND&);
BOND& operator=(const BOND&);
private:
static BOND* onlyInstance_;
set<long> * vrijkaartjes;
};
#endif |
code:
1
2
3
4
5
6
7
8
9
10
| ..............
private:
/**
* naam van de dierentuin
*/
string naam;
BOND * bond;
............. |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| // Dierentuin.cc
#include <assert.h>
#include "BOND.h"
#include "Dierentuin.h"
#include "Dier.h"
#include "Kooi.h"
#include "Werknemer.h"
#include <set>
#include <typeinfo>
Dierentuin::Dierentuin(string naam) {
beschikbareDierNummers = new vector<int>;
bond = BOND::Instance();
beschikbareWerknemerNummers = new vector<int>;
dieren = new map<int, Dier *>;
kooien = new map<string, Kooi *>;
werknemers = new map<int, Werknemer *>;
}
........en de rest van dierentuin |