Hallo alle zusammen,
Vorab zu meiner Verteidigung: Ich habe das Buch bisher sehr gut verstanden, habe die Kapitel wirklich notfalls immer und immer wieder durch gelesen, bis es sitzt. Aber trotzdem habe ich folgendes Problem, wo meine Logik beginnt zu streiken:
Ich verstehe in Listing 9.4 nicht, warum die Funktion "starten ()" den Wert in m_ID wiedergeben kann. Woher weiß die Funktion "starten", dass sie die Werte aus der Liste "lSchiffe" nehmen soll und in den Platzhalter "m_ID" setzen soll. Hier der Code, damit die Frage auch Sinn ergibt:
--------------------------------------
|
C-/C++-Quelltext
|
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
|
#include <iostream>
#include <list>
using namespace std;
class CRaumschiff
{
public:
// Memberfunktionen
CRaumschiff (int ID)
{
m_ID = ID;
cout << "Raumschiff erstellt\n";
}
~CRaumschiff () {cout << "Raumschiff zerstoert\n";}
void Starten ()
{
cout << "Raumschiff startet" << endl;
cout << "ID: " << m_ID << endl;
}
private:
int m_ID;
};
int main ()
{
list<CRaumschiff*> lSchiffe;
list<CRaumschiff*>::iterator i;
int Anzahl = 0;
CRaumschiff *Temp = NULL;
cout << "Wie viele Raumschiffe erzeugen: ";
cin >> Anzahl;
for (int j=0; j<Anzahl; j++)
{
Temp = new CRaumschiff (j+1);
lSchiffe.push_back (Temp);
}
for (i=lSchiffe.begin(); i!=lSchiffe.end(); ++i)
{
(*i)->Starten ();
}
for (i=lSchiffe.begin(); i!=lSchiffe.end(); ++i)
{
delete (*i);
(*i) = NULL;
}
lSchiffe.clear ();
return 0;
}
|
Ich habe mal die Kommentare entfernt, um ein wenig Platz zu sparen. Mit (*i)->starten() greife ich ja auf die Funktion zu, aber anscheinend passiert da ja mehr als nur ein Zugriff. Was genau passiert denn da (ich zerbreche mir nun seit 2 Tagen den Kopf darüber) Ich bin wirklich jedem dankbar, der mir hilft, dies zu verstehen.