Zugriff auf static-Attribute



  • Hallo zusammen!

    Ich habe für eine Klasse mit "static" mehrere Klassenattribute deklariert. Bisher hatte ich immer eine Trennung eingehalten: Klassendefinition und Prototypen in der Headerdatei einer Klasse, Implementierung der Methoden in der cpp-Datei.
    Das ging da schonmal irgendwie nicht. Die Methoden mit denen ich auf die static-Attribute zugreife mussten in der Klassendefinition stehen (oder zumindest hab ichs nicht anders hingekriegt).
    Jedenfalls habe ich jetzt static-Methode die sämtliche static-Atttribute setzt. Diese Methode ist als public gedacht und soll es ermöglichen, die Klassenattribute von außen zu setzen. Ein Setter für alle static-Attribute quasi.
    Der Aufruf dieser static public (Setter-)Methode klappt aber auch wieder nicht und ich befürchte jetzt dass der Aufruf der static-Methode auch in der Klassendefinition efolgen muss. Das würde aber bedeuten, dass ich diese Methode nciht von außen benutzen kann und das kann doch wohl nicht sein??!!

    Also weiß jemand wie ich das hinkriege?

    Danke
    Dirk



  • was klappt nicht? compilierfehler? Linkerfehler? Absturz oder was? zeig mal nen bissel Code



  • war n linkerfehler.

    habs jetzt hingekriegt (google sei dank).

    aber komisch ists schon:

    ich deklariere statische methoden und attribute ganz normal im header (der code der statschen methoden kommt auch in den header) und dann muss ich sie in der cpp-datei "nochmal deklarieren".

    ist das normal??



  • ja, ist normal



  • In der CPP-Datei muß Du noch definieren. Irgendwo muß noch Speicherplatz für das Attribut belegt werden. Das kann nicht im Header passieren, weil sonst jede Übersetzungseinheit ihre eigene Variable kriegen würde. Also muß es ins CPP-File.
    Daher auch der Linker-Fehler. Er hat zwar ne Deklaration im Header, konnte aber den Speicher der dazu gehört nicht finden.

    MfG Jester


Anmelden zum Antworten