member funktionen anderer klasse bekanntmachen
-
Hallo ich habe eine klasse a
und eine klasse bin der klasse a habe ich eine protected memberfunktion
diese möchte ich von b aus aufrufen.
ich müsste diese ja dazu static machen. aber wenn ich diese static mache, dann
meckert der compiler
error C2597: Ungueltige Referenz auf ein Datenelement 'Cblabla::m_strvariable' in einer statischen Member-Funktionwie kann ich dennoch die funktion in b aufrufen, und arbeitet er dann auch mit der m_strvaribale ( von a )in der klasse b?
ich möchte die fkt so aufrufen
fkt_von_a( meinstring);
-
hoffe, dass ich etz nix falsch verstanden hab...
evtl. so:
a::fkt_von_a( meinstring)
Aber dann darf fkt_von_a natürlich auf keine Elementvariablen von a zugreifen.
Alternative:
in b ein Objekt von a erstellen, und dann mita.fkt_von_a( meinstring);
aufrufen.
Hierzu darf fkt_von_a allerdings nicht protected sondern public sein.
oder b von a ableiten:
class b : public a {...}
in b dann:
this->fkt_von_a( meinstring)
mfg
Martin
-
Alternativ dazu hast du die Moeglichkeiten von Zeiger auf Elementfunktionen oder
friend.mfg
v R
-
oder du benutzt das Prinzip der Friendklasse.
-
ich habs jetzt so gelöst
z.b. klasse A
A->die_funktion(str); / das geht
sprich ohne friend ohne gar nichts. cool oder?
-
Ich bezweifle dass das geht. Den halben kommentar sollte der compiler nich schlucken. :p
Allerdings versteh ich auch den rest nicht. Man sieht da garnicht was du denn nun gemacht hast. Kannst das nochmal aufklären ?
-
Ok es war in MFC
dort habe ich eine klasse für einen dialog
namens
CMainFrame
und auf dem gleichen Bildschirm noch eine andere Klasse ( auch ein Dialog )
beide dialoge haben ähnlchen inhalt ( einer mehr, einer weniger )
jetzt soll aber beim klicken was geschehen, egal in welchem dialog ich klicke, da sie in der listbox die gleiche ID haben.
Jetzt hab ich die funktion in der CMainFrame geschrieben
und aufgerufen habe ich es dann so
// im 2ten Dialog CMainFrame->die_neue_fkt_halt(str); // so jetzt mit ganzem comment ;)
die fkt hab ich jetzt doch public gemacht
Frag die c++ Gurus warum das geht. ich bin froh
hab nichts ableiten müssen, nichts mit friend machen, einfach geil
aber 1000 dank an allen für die tipps
-
Öhm aber wenn die methode jetzt public ist, dann ist das doch nix tolles