Interne Funktion
-
@Registrierter Troll,

Ich muss ein paar Namen ändern gehen
Danke für die Aufklärung, hatte das anders im Kopf.Grüssli
-
Ich denke wenns wirklich am Design nicht besser hinzubiegen ist (was ich erst glaube wenn ichs sehe), dann ist das mit der protected methode der richtige Weg - und zwar mit private Vererbung:
class Foo { public: meh(); protected: methode(); }; class Bar : private Foo //statt Foo als Member zu haben. { void baz() { methode(); // (!) } };
-
pumuckl schrieb:
Ich denke wenns wirklich am Design nicht besser hinzubiegen ist (was ich erst glaube wenn ichs sehe), dann ist das mit der protected methode der richtige Weg - und zwar mit private Vererbung:
class Foo { public: meh(); protected: methode(); }; class Bar : private Foo //statt Foo als Member zu haben. { void baz() { methode(); // (!) } };Und wieso ist das besser als
friend? Die Bindung ist doch noch viel stärker.
-
Tachyon schrieb:
Und wieso ist das besser als
friend? Die Bindung ist doch noch viel stärker.Nope. Friend-Bindung ist noch stärker als Vererbung (weil friend eben auch Zugriff auf private Elemente erlaubt, Vererbung nicht).
-
pumuckl schrieb:
Tachyon schrieb:
Und wieso ist das besser als
friend? Die Bindung ist doch noch viel stärker.Nope. Friend-Bindung ist noch stärker als Vererbung (weil friend eben auch Zugriff auf private Elemente erlaubt, Vererbung nicht).
Okay, da ist was dran.
-
Wie ich bereits sagte, ich mach die Methode public und vermerke in der Doku, dass man sie eher nicht verwenden sollte. Aber eben KANN. Drum macht private absolut keinen Sinn. Vererbung gleich 3mal nicht, da die Klassen nicht zum Ableiten designed sind und es auch nie werden.
@Tachyon: Mach mal hier lieber nicht auf dicken Macker. So der Oberchecker biste ja offenbar auch nicht, gelle?

-
frager schrieb:
@Tachyon: Mach mal hier lieber nicht auf dicken Macker. So der Oberchecker biste ja offenbar auch nicht, gelle?

Im Gegensatz zu einigen anderen hier lasse ich mich mit brauchbaren Argumenten aber i.d.R. belehren.
-
Noch besser wärs, wenn du im Forum Kindereien wie
Tachyon schrieb:
Also knivel->Epic fail
unterlässt.
-
Die Beschreibung "User sollte nicht, darf aber wenn er genau weiss was er tut" deutet IMO auf einen Design-Fehler hin. Natürlich kann man das nicht 100% sagen ohne den speziellen Fall zu kennen, aber meist ist es so.
Ich würde also sagen: einfach private machen, und per "friend" drauf zugreifen lassen.
Sollte irgendwann mal der Fall auftreten, dass die Funktion von aussen benötigt wird, kannst du die Funktion dann immer noch public machen.
-
Oft ist es so, dass man diese öffentlichen Methoden nicht zwingend braucht. Aber wenn man weiß was man tut, kann man dadurch Sachen effektiver implementieren, wenn man zB. selber im internen Puffer rumpfuschen kann.