Forum: PC-Programmierung C++ Klassendeklaration


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Lothar (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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();
  ...
}

von Experte (Gast)


Bewertung
2 lesenswert
nicht lesenswert
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).

von BobbyX (Gast)


Bewertung
1 lesenswert
nicht lesenswert
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. ;-)

von cppbert3 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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

von Lothar (Gast)


Bewertung
0 lesenswert
nicht lesenswert
cppbert3 schrieb:
> Heute wird alles mit lockerer Kopplung und mehr Komposits gelöst

Könntest Du das bitte mal zeigen an dem Beispiel?

von P. S. (namnyef)


Bewertung
0 lesenswert
nicht lesenswert
Das kommt dabei heraus, wenn die eigentliche Idee von OOP zum 
Selbstzweck verkommt.

von Rolf M. (rmagnus)


Bewertung
1 lesenswert
nicht lesenswert
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.

von BobbyX (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.