klassenfrage, memberfkt. gemeinsam nutzen
-
Wenn ich sowas habe
class A { ... protected: void member1(bool b); // muss ich hier machen :friend B ???? oder wie genau? private oder auch protected bool b; .. } class B // nichts mit a zu tun { ...... }
Das Problem ist folgendes, ich habe unter MFC eine Klasse A Welches den oberen Bildschirmbereich verwaltet ( Cwinmainframe ) dann unten hab ich eine klasse B ( CFrachteingabe, mit listboxen ect. )
In der Klasse A, habe ich bereits Memberfkt. welche mit einer Klasse C ( server ) komunizieren
Jetzt soll ich nicht nur server messages schicken bei A sondern auch bei B.
Ich brauche also 1 fkt. die ich in beiden "views" benötige. Jetzt hab ich die mal bei Klasse A genommen. Wie kann ich jetzt bei B auch draufzugreifen, sodass wenn ich in die ListBox klicke auch datensätze genommen werden und an den server übermittelt werden wie bei A ?
vielen Dank im voraus
-
Warum schreibst Du nicht sowohl in A als auch in B jeweils eine Methode, die auf den Server zugreifen? Und je nachdem, welche der beiden Views nun Nachrichten für den Server hat, rufst Du eben entsprechend deren Methode auf.
-
weil es die gleiche methode ist, und mein auftraggeber das so haben will. Sonst würde ich auch einfach Copy&Paste machen.
Kann man nicht einfach die eine Methode der anderen zuweisen ohne gleich die ganze klasse abzuleiten. Ich hätte sowieso alle listboxen und so weiter, in eine CWinMnFrame Klasse geschrieben, und nicht in 3. Naja
-
Ich kenne mich mit dem friend-Schlüsselwort nicht aus, aber es müsste ungefähr so funktionieren:
class B {} class A { friend B; // B darf jetzt auf nicht öffentliche Variablen von A zugreifen, aber ob das das ist, was du willst? protected: void member1(bool b); private oder auch protected bool b; }
Wenn Du die Funktion nicht mehrfach schreiben sollst, wäre es vielleicht sinnvoll, die ganze Kommunikation in eine extra Klasse auszulagern, evtl. in die, die fürs Anzeigen der verschiedenen views zuständig ist oder eine ganz neue.
-
Danke
ich werds mal versuchen. Ja So macht man schon die Friendklassen, da hat B aber zugriff auf ganz A. Gibt es wirklich keinen weg, nur eine Methode freizugeben?