[C++] Variable in einer Klasse soll für alle Objekte gleich sein

Tobias K.

Erfahrenes Mitglied
moin


Ich weiss das es sowas gibt weiss nur nicht mehr wie.

Ich möchte eine Klasse mit Informationen schreiben, in der Klasse soll eine Zahlervariable sein, die für alle Objekte den selben Wert hat und auch von allen erhöht werden kann.
So ähnlich wie static.


mfg
umbrasaxum
 
So ähnlich wie static.

Das is das was du suchst.

Code:
#include <iostream>

using namespace std;

class Object{

public: 
        static int objectCounter;

        Object(){
                objectCounter++;
        }

};

int Object::objectCounter = 0;

int main(){

        Object o[3];
        cout << Object::objectCounter << " objects were constructed!" << endl;
        return 0;
}

Gruß

RedWing
 
Es gibt natürlich auch noch die Möglichkeit das ganze über einen Konstruktor zu lösen

Code:
#include <iostream>

using namespace std;

class Object{

       Object() {objectCounter=0;} //Der Konstruktor heißt immer gleich wie die Klasse
public: 
        static int objectCounter;

        Object(){
                objectCounter++;
        }

};


int main(){

        Object o[3];
        cout << Object::objectCounter << " objects were constructed!" << endl;
        return 0;
}

Der Konstruktor wird jedes mal dann aufgerufen wenn du die Klasse instanzierst
 
Das lässt sich mit Sicherheit nicht kompilieren, weil der Defaultkonstruktor zweimal vorhanden ist. In C++ gibt es keinen Klassenkonstruktor wie in C#.
 
Es geht aber, wenn du den ersten Constructor weglässt und dafür nur EINMAL IM GANZEN PROGRAMM irgendwo

int Object::objectcounter = 0;

schreibst.
 
moin


@Steiner_B
Trotzdem würde es nicht wie gewollt funktionieren, wenn ich nicht alle Objekte auf einmal erzeuge die ich brauch.


mfg
umbrasaxum
 
Zurück