zugriff auf eigene Klasse

stefan-rw

Mitglied
Hallo,

Ich habe mit dem visual Studio eine Dialogfeld basierte Anwendung erstellt. Dann habe ich dieser Anwendung eine neue Klasse hinzugefügt, und in dieser Klasse eine public funktion erstellt:

public:
void SetBox(CComboBoxEx* m_MyBox)

Wenn ich jetzt im Dialogfeld versuche die Funktion mit
files::SetBox(m_MYComboBox);
aufzurufen erhalte ich beim Compilieren den Fehler:
ungültige Verwendung einer nicht statischen Memberfunktion.

Lege ich im Dialogfeld eine Variable vom Typ files fest ( Cfiles m_MyFile) kann ich Problemlos die Funktion mit
m_MyFile.SetBox(m_MYComboBox); aufrufen.

Ist das normal, oder gibt es eine Möglichkeit die Funktion ohne eine Variable, also einer Instaziierung der Klasse files aufzurufen?

Die Einbindung der files.h erfolgt natürlich.

Danke und Gruss

Stefan
 

MCoder

Erfahrenes Mitglied
Hallo,

wie der Zugriff ohne Instanziierung funktionert, hat ja schon die Compilermeldung angedeutet: Du musst die betreffende Methode als "static" (statisch) deklarieren.

Gruß
MCoder
 

stefan-rw

Mitglied
Danke... werd das so tun.

Aber das static heisst doch, dass die Funktion keine Wertänderungen vornehmen kann !? Kann ich dann überhaupt die Eigenschaften des Objekts ändern ?

Gruß Stefan
 

vfl_freak

Premium-User
Hi Stefan,

was Du meinst, ist "const"!

"static"-Methoden sind einfach nur klassen- und nicht instanzspezifisch, d. h. sie besitzen keinen this-Zeiger und könne daher nur andere statische Elemente (Daten oder Methoden) aufrufen!

Nur bei Methoden, die als "const" deklariert sind, können keine Daten geändert werden!

Gruß
Klaus
 

vfl_freak

Premium-User
kein Problem, dafür gibt es diese Seiten ja!
Ich schmeiße sowas auch gerne mal durcheinander, da ich hier parallel mit C/C++ und Java rumfummel ..... :rolleyes:

Schönes WE!
tschüss
Klaus