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...


Anmelden zum Antworten