[Newbie Frage]: static Variable in Klassendeklaration



  • Hallo
    ...in meiner C++ Klasse hätte ich gerne eine static Variable. Grund: Diese Variable soll mir die Anzahl instanzen zurückgeben, die von dieser Klasse erstellt wurden. Inkrementierung würde im Konstruktor erfolgen.

    Leider lässt sich der Code mit der static Variable innerhalb der Klassendeklaration nicht compilieren...

    Muss ich also die Variable zwingend ausserhalb der Klasse definieren?

    class MyClass{
     public:
      MyClass();
      virtual ~MyClass();
    
     private:
      static int m_iInstancesCount; // geht so nicht. weshalb nicht?
    };
    


  • Ja, mußt du - und am besten legst du diese Definition in deine CPP-Datei:

    //.H
    class myClass
    {
      static int count;
    public:
      myClass();
      ~myClass();
      //...
    };
    
    //.CPP
    #include "myclass.h"
    int myClass::count=0;
    
    myClass::myClass()
    {
      ++count;
    }
    
    myClass::~myClass()
    {
      --count;
    }
    

    Die Deklaration gibt nur den Namen und Typ der Variable vor - mit der Definition wird der Speicherplatz dafür reserviert (bei normalen Member-Variablen passiert das, wenn du ein myClass-Objekt anlegst, bei statischen Members mußt du selber dafür sorgen).


Anmelden zum Antworten