statische funktion auf privates element

heidler

heidler

Foren As
hallöchen hab grad folgendes problem: meine statische funktion
will nicht auf mein privates element zugreifen. hier der code:

knd.h
Code:
class CKundenstamm{
private:
	Fl_Window *kndwin;  //hier
public:
	CKundenstamm();
	~CKundenstamm();
	static void knd_fenster(Fl_Widget*, void* user);
	static void zeige_kundenstamm(Fl_Widget*, void* user);
	
};

dann die c+++
Code:
void CKundenstamm::knd_fenster(Fl_Widget*, void* user){
//wenn das drin steht: Fl_Window *kndwin; gehts natürlich  	

//hier is der fehler
	kndwin = new Fl_Window(800,500,"Kundenstamm");
	kndwin->show();
	
}

Irgendwelche ideen wie man das machen kann?

servus
 
Ich glaube ich hab die Lösung gefunden.

in h
Code:
private:
static Fl_Window *kndwin;

in cpp:
Code:
Fl_Window *CKundenstamm::kndwin;

Ich weis zwar nicht ob ich irgendendwelche c-rules breche, aber es funktioniert.

servus
 
Eine statische Methode hat keinen Zugriff auf Variablen der Klasse, da ja für den Aufruf der Methode auch kein Objekt benötigt wird (salop ausgedrückt). Eine Ausnahme sind die ebenfalls statischen Variablen (hast Du ja schon selbst gemerkt), diese existieren ja nur 1x pro Klasse (nicht 1x pro Objekt).
In Deinem Fall hast die Klasse jetzt nur eine "kndwin"-Variable. Wenn Du dort ein zweites Fenster öffnen/speichern/etc. möchtest, hast Du ein Problem.

Heiko
 

Ähnliche Themen

"non blocking console input" wieder rückgängig machen?

objekt-katalog

Java repaint() zeichnet Canvas Objekt nicht neu

Debian squeeze, Webmin, Samba Freigaben

Xubuntu - AVR32-linux crosscompile sqlite

Zurück
Oben