Funktionsufruf zwischen 2 Klassen
-
Hallo !
Folgende Sache beschäftigt mich gerade...dazu das folgende Beispiel:class alt: public MUIWidget
{ public:
void testalt();
}void alt::bufferalt()
{ printf(...);
}class neu: public MUIWidget
{ public:
void testneu();
}void neu:bufferneu()
{ printf(...);
// Aufruf der Funktion bufferalt
}Nun jetzt möchte ich gerne in der Funktion bufferneu,
die Funktion bufferalt aufrufen.Aber wie mach ich das ??
Mein Compiler ist nur am meckern ??
Kann mir jemand helfen, wie ich das am besten per Software mache ?
Mfg Bernd
-
Bernd T. schrieb:
Nun jetzt möchte ich gerne in der Funktion bufferneu,
die Funktion bufferalt aufrufen.Von welchem alt-Objekt?
-
Wie sehen die Fehler-Meldungen deines Compilers aus? Wie sieht din Aufruf aus?
Im Moment müsste der Aufruf etwa so aussehen:
irgendEinObjektDesTypsAlt.bufferalt();Wollstst du "neu" vielleicht von "alt" ableiten und nicht von "MUIWidget"?
-
Hallo !
In meiner Datei habe ich den folgende Funktionsaufruf stehen:void neu:bufferneu()
{ printf(...);
alt::bufferalt(); // Der soll dann die Funktion bufferalt aufrufen!
}So wie ich mir das an gelesen habe, sollte es so auch funktionieren.
Aber wahrscheinlich nicht, sonst würde der Compiler nicht meckern !!Fehlermeldung vom Compiler:
cannot call member function `void alt::bufferalt()' without objectSorry bin C++ Neuling..!
-
Bernd T. schrieb:
Hallo !
In meiner Datei habe ich den folgende Funktionsaufruf stehen:void neu:bufferneu()
{ printf(...);
alt::bufferalt(); // Der soll dann die Funktion bufferalt aufrufen!
}So wie ich mir das an gelesen habe, sollte es so auch funktionieren.
Aber wahrscheinlich nicht, sonst würde der Compiler nicht meckern !!Fehlermeldung vom Compiler:
cannot call member function `void alt::bufferalt()' without objectSorry bin C++ Neuling..!
Jo, da fehlt wie vermutet eine Instanz, auf der du die Methode aufrufst.
Vermutlich nicht ganz das, was du willst, aber funktionieren würde:
void neu:bufferneu() { printf(...); alt eineAltInstanz; eineAltInstanz.bufferalt(); }Ich vermute immernoch, dass "neu" von "alt" abgeleitet sein soll, kenne aber die absichten hinter deinem Vorhaben nicht. Sähe dann so aus:
class alt: public MUIWidget { public: void bufferalt(); }; void alt::bufferalt() { printf(...); } class neu: public alt // neu ist ein alt { public: void bufferneu(); }; void neu:bufferneu() { printf(...); alt::bufferalt(); // oder sogar nur bufferalt(); }Vielleicht soll ein "neu" auch ein "alt" haben:
class neu: public MUIWidget { public: void bufferneu(); private: alt einAlt; // neu hat ein alt }; void neu:bufferneu() { printf(...); einAlt.bufferalt(); }