In dieser C++ Klassendeklaration, was bedeutet das zwischen "class GraphWindow:" und der ersten "{"? Das sind andere Klassen, aus denen die gelisteten virtual Funktionen kommen. Aber "class GraphWindow" ist damit keine abgeleitete Klasse so wie hier erklärt - denn die virtual Funktionen werden erst "ausserhalb" befüllt?? https://www.geeksforgeeks.org/virtual-function-cpp/ class GraphWindow: public tbx::AutoCreateListener, public tbx::AboutToBeShownListener, public tbx::RedrawListener, public tbx::Command, public tbx::SliderValueChangedListener, public tbx::Timer { private: tbx::Window _window; tbx::ActionButton _action; tbx::DisplayField _disp_left; tbx::DisplayField _disp_right; tbx::Slider _slider; public: virtual void auto_created(std::string template_name, tbx::Object object); virtual void about_to_be_shown(tbx::AboutToBeShownEvent &e); virtual void redraw(const tbx::RedrawEvent &e); virtual void execute(); virtual void slider_value_changed(const tbx::SliderValueChangedEvent &e); virtual void timer(unsigned int elapsed); }; void GraphWindow::auto_created(std::string template_name, tbx::Object object) { ... } int main() { ... GraphWindow handler; app.set_autocreate_listener("Window", &handler); app.run(); ... }
Lothar schrieb: > Aber "class GraphWindow" ist damit > keine abgeleitete Klasse Doch "GraphWindow" ist eine abgeleitete Klasse. Von insgesamt 6 Basisklassen. Lothar schrieb: > denn die virtual > Funktionen werden erst "ausserhalb" befüllt?? Das spielt keine Rolle. Das ist sogar der Normalfall. Es ist egal, wo die eine Methode implementiert wird (vereinfacht gesagt).
Lothar schrieb: > class GraphWindow: > public tbx::AutoCreateListener, > public tbx::AboutToBeShownListener, > public tbx::RedrawListener, > public tbx::Command, > public tbx::SliderValueChangedListener, > public tbx::Timer Wer auch immer sich das ausgedacht hat, der sollte nie wieder eine Zeile Code schreiben dürfen. ;-)
BobbyX schrieb: > Lothar schrieb: > >> class GraphWindow: >> public tbx::AutoCreateListener, >> public tbx::AboutToBeShownListener, >> public tbx::RedrawListener, >> public tbx::Command, >> public tbx::SliderValueChangedListener, >> public tbx::Timer > > Wer auch immer sich das ausgedacht hat, der sollte nie wieder eine Zeile > Code schreiben dürfen. ;-) Das ist so richtig alte "alles-OOP-Interfaces-Orgie" Denke, wird der Stil nicht mittlerweile mit Freiheitsstrafe geahndet? früher so in den 80/90 Jahren dachten viele das wäre der beste Stil, hat jahrzehnte gedauert bis so was nicht mehr cool war Heute wird alles mit lockerer Kopplung und mehr Komposits gelöst
cppbert3 schrieb: > Heute wird alles mit lockerer Kopplung und mehr Komposits gelöst Könntest Du das bitte mal zeigen an dem Beispiel?
Das kommt dabei heraus, wenn die eigentliche Idee von OOP zum Selbstzweck verkommt.
Lothar schrieb: > In dieser C++ Klassendeklaration, Es handelt sich um eine Klassendefinition. > was bedeutet das zwischen "class GraphWindow:" und der ersten "{"? Das sind die Basisklassen, von denen GraphWindow abgeleitet ist, womit das hier: > Aber "class GraphWindow" ist damit keine abgeleitete Klasse so wie hier > erklärt Quatsch ist.
cppbert3 schrieb: > früher so in den 80/90 Jahren dachten viele das wäre der beste Stil, hat > jahrzehnte gedauert bis so was nicht mehr cool war Das hat nicht viel mit Stil oder Coolness zu tun, sondern mit niedrigen IQ Werten der Programmier verbunden mit Dogmatismus. Sie sind eben nicht in der Lage die Zusammenhänge und Relationen richtig zu erkennen und umzusetzen, und versuchen dann das mit blindem Glauben zu bewerkstelligen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.