Static function in class
-
Hallo ich habe nen problem
Ich benötige eine statische Funktion innerhalb einer Klasse(wegen schnittstelle) und möchte aus dieser daten an eine benutzeroberfläche geben .Ich hab mal ne muster Datei angelegt um es zu verdeutlichen.
class irgendwas { irgendwas.h public: irgendwas(); virtual ~irgendwas(); public: int y;//die Variable wo das rein soll static int blabla(int x); //statische funktion };
#include "stdafx.h" #include "irgendwas.h" ////////////////////////////////////////////////////////////////////// // Konstruktion/Destruktion ////////////////////////////////////////////////////////////////////// irgendwas::irgendwas() { } irgendwas::~irgendwas() { } int irgendwas::blabla(int x){ y=x; return 1;}
Herauskommt beim compelieren :
C:\Testle\irgendwas.cpp(22) : error C2597: Ungueltige Referenz auf ein Datenelement 'irgendwas::y' in einer statischen Member-Funktion
Fehler beim Ausführen von cl.exe.Irgendwie raff ich das nicht, wenn mir da wer nen tip geben kann...
-
ups da hat sich nen fehler eingeschummelt beim posten ind der header Datei steht "irgendwas.h" natürlich nicht im quellcode...
-
Deine Funktion ist statisch und daher in jedem Falle vorhanden, auch wenn die Klasse noch nicht referenziert wurde. Die Member-Variable Y ist dies nicht. Sie ist erst bei einer Referenzierung der Klasse verfügbar.
Es geht nur, wenn auch die Member-Variable statisch definiert wird. Doch Vorsicht: Es gibt diese Variable dann nur einmal, egal wie oft die Klasse referenziert wird. Jede Referenz, die auf Y schreibt, ändert die Variable auch für alle Referenzen.
-
// Edit
y muss static sein, wenn du es aus der statischen Methode benutzt...