Du bist nicht angemeldet.

Werbeanzeige

1

05.11.2016, 22:27

Zugriffsfunktionen für statische Membervariablen

Hallo Zusammen
Ich arbeite das Buch "C++ für Spieleprogrammierer 3. aktualisierte Auflage durch. Ich bin nun am Ende des 7. Kapitels "Klassen" angelangt. Im letzten Thema 7.10 geht es in Listing 7.15 um "Statische Membervariablen. Da steht im allerletzten Abschnitt dass man den Quellcode verbessern kann, indem man Zugriffsfunktionen für die statischen Membervariablen schreiben kann um eine kontrollierte Schnittstelle zu haben. Weiter vorne im Kapitel wurden die Zugriffsfunktionen auch schon thematisiert (Listing 7.3) und hat auch gut funktioniert. Ich habe das Kapitel nun dreimal durchgearbeitet finde aber keine Lösung das es bei den statischen Membervariablen auch funktioniert. Vielleicht kann mir jemand helfen der das Buch auch schon durchgearbeitet hat.

Ich habe nun noch den gesamten Code von Listing 7.15 eingefügt. Hier sollen nun, laut dem letzten Abschnitt in Kapitel 7, Zugriffsfunktionen erstellt werden um eine kontrollierte Schnittstelle zu den statischen Membervariablen zu erhalten.


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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//C++ für Spieleprogrammierer
//Listing 7.15
//Statische Membervariablen
//
#include <iostream>

using namespace std;

//Klassen
//
class CRaumschiff
{
   protected:

      //Membervariablen
      int m_Farbe;
      int m_Energie;

   public:

      //Memberfunktionen
      CRaumschiff ();
      ~CRaumschiff ();

      //Statische Membervariablen
      static int m_Zaehler;

};

//Konstruktor
//
CRaumschiff::CRaumschiff ()
{
    cout << "Konstruktor aufgerufen " << endl;
    //Standardwerte initialisieren
    m_Farbe = 0;
    m_Energie = 0;
    m_Zaehler++;

    cout << "Anzahl der Raumschiffe: ";
    cout << m_Zaehler << endl;
}//Konstruktor

//Destruktor
//
CRaumschiff::~CRaumschiff ()
{ 
    cout << "Destruktor aufgerufen " << endl;
    m_Zaehler--;

    cout << "Anzahl der Raumschiffe: ";
    cout << m_Zaehler << endl;
}//Destruktor

//Definition der statischen Variablen
int CRaumschiff::m_Zaehler;

//Hauptprogramm
//
int main ()
{
    //Variablen
    //
    CRaumschiff::m_Zaehler = 0;
    CRaumschiff *Schiffe = NULL;
    int Anzahl = 0;

    //Anzahl erzeugende Raumschiffe abfragen
    cout << "Wie viele Raumschiffe: ";
    cin >> Anzahl;

    //Prüfen ob es mindestens ein Raumschiff gibt
    if (Anzahl < 1)
        Anzahl = 1;

    Schiffe = new CRaumschiff[Anzahl];

    delete[] Schiffe;

    //Und zum Schluss den Zählerstand ausgeben
    cout << "Zaehler: " << CRaumschiff::m_Zaehler << endl;


    return 0;
}

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Progr.Heavy« (07.11.2016, 18:16) aus folgendem Grund: Unvollständiger Text


David Scherfgen

Administrator

Beiträge: 9 982

Wohnort: Bonn

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

05.11.2016, 23:42

Header:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
class C
{
private:
    static int x;

public:
    static int getX();
    static void setX(int newX);
};

Source:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
int C::x = 42;

int C::getX()
{
    return x;
}

void C::setX(int newX)
{
    x = newX;
}