Funktionen erben von Funktionen
-
Hallo!
Ich hab mal ne Frage:
Es gibt ja Dinge, die haben den gleichen Anfang, aber ein anderes Ende. OK, jetzt cpp m#äßig:
Ehm, ich hab eine Funktion, die initialisiert quasi den Vorgang, und dann werden die Variablen verschieden ausgewertet...z.B.:
void f1() { cout << "Init"; cout << "Verarbeitung 1"; } void f2() { cout << "Init"; cout << "Verarbeitung 2"; }
Init wird in jeder Funktion aufgerufen, aber der Abschluss ist anders. Ich hoffe dieses Stark vereinfachte Beisopiel ziegt was ich meine.
Nun möchte ich nicht immer in den jeweiligen Fnktionen den selben Ini-Code schreiebn, ist ja auch nicht regelkonform oder so. Ich kann aber auch nicht einfach eine Init()-Func schreiebnm, weil in ihr sehr viele Variablem initilisiert werden. Nun, vielleicht geht es ja, dass eine Funktion quasi von einer zweiten erbt, also, dass der Code der Basisfunktion vor den Code der abgeleitetn Funktion geschtrieben wird. Geht so was ? Oder gibt es einen andere Möglichkeit?Gruß, Maxi
-
Schreib dir doch einfach eine Funktion die nur die Initialisierung beinhaltet.
In jeder Funktion, in der du etwas initialisieren musst, rufst du diese dann auf. Je nach aufbau deiner funktion musst du dann halt mit Parametern und/oder Rückgabewerten arbeiten.void Initialisierung(void) { somethin; somethin-else; } void Verarbeitung(void) { Initialisierung(); sum-sum-sumtin; }
Dies ist übrigends auch stark vereinfacht
-
Sowas hab ich noch nie gemacht. keine ahnung, ob das toll ist.
class F1 { public: f1 () { // initkram } void operator () () { // blabla } } f1; class F2 : public F1 { void operator () () { // blabla } } f2;
-
Hm, @Helium: Das versteh ich nich.
Und was ist, wenn ich eine ganze Menge an Variablen initialisiere? Alle als Paramter übergeben oder gibts noch ne andere Möglichkeit?Gruß, Maxi
-
Du machst aus dem ganzen Vorgang eine Klasse. Die Variablen, die in Init initialisiert werden, werden zu Attributen, der Code von Init kommt in den Konstruktor. Die nachfolgenden Codestücke werden zu unterschiedlichen Methoden. Überlege evtl. ob die verschiedenen Methoden in unterschiedlichen Klassen liegen (-> Vererbung).
Wenn du nicht weiterkommst, werde mal etwas konkreter in deiner Fragestellung.
-
Ja, danke jetzt hab ichs kapiert. Ich hab grad keinen Compiler zur hand, aber i h denke, ich krieg es hin.
Gruß, Maxi