Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.sci.electronics > #203907

Re: C++ method pointer?

From Hans-Peter Diettrich <DrDiettrich1@aol.com>
Newsgroups de.sci.electronics
Subject Re: C++ method pointer?
Date 2016-03-09 20:29 +0100
Message-ID <dkbbsfFrl7lU1@mid.individual.net> (permalink)
References <dkb40lFph51U1@mid.individual.net> <dkb4itFpm0sU1@mid.individual.net> <dkb97bFqtk3U1@mid.individual.net> <dkbacvFr7hsU1@mid.individual.net>

Show all headers | View raw


Christian Zietz schrieb:
> Hans-Peter Diettrich schrieb:
> 
>> Ich dachte auch schon an eine Klasse pro Protokoll, nur bläht das die 
>> Bibliothek auf.
> 
> Im Quellcode vielleicht. Compiliert kommt ziemlich genau das heraus, was
> Du mit Deinen händischen Methodenpointern auch machen willst. Jede
> abgeleitete Klasse hat eine vtable mit einem Pointer auf ihre
> decode-Methode.
> 
>> Virtuell scheint mir auch überflüssig, denn wenn man ein Objekt der 
>> abgeleiteten Klasse erzeugen muß, dann kann man dessen Methoden auch 
>> direkt aufrufen.
> 
> Eben nicht. Du könntest z.B. sowas haben:
> 
> AbstractDecoder* decoder = AbstractDecoder::createDecoder(x);
> decodeddata = decoder->decode(data);

Mir ist schon eingefallen, warum virtuelle Methoden unerwünscht sind 
(siehe andere Mail).

Eigentlich könnte man hier auf Objekte (immer Singletons) ganz 
verzichten, ich hatte auch schon an einen Aufruf wie
   if (decodeNEC(ErgebnisVar)) ... //liefert Wert in ErgebnisVar zurück
gedacht. Aber leider liegen manche Parameter in der Instanz der Klasse, 
und es wäre auch aufwendiger, neue Decoder einzufügen. Deshalb möchte 
ich auch eine weitgehende Kompatibilität mit den vorhandenen 
Bibliotheken beibehalten.

> Je nach Wert von 'x' wird 'decoder' nun zur Laufzeit eine Instanz von
> SonyDecoder, NECDecoder usw. Trotzdem ruft decoder.decode() immer die
> passende decode-Methode (und nicht etwa die in AbstractDecoder) auf.
> Genau *dafür* brauchst Du virtuelle Methoden. => C++-Lehrbuch lesen.

Wie gesagt, dynamische Erzeugung ist überflüssig und auf einem 
schmalbrüstigen µC auch unerwünscht.

Meine C++ "Lehrbücher" (Borland C++) sind leider ziemlich alt, und 
beantworten meine Fragen auch nicht. Mir wäre eine andere Sprache auch 
lieber, OPL oder Ada, aber für die Verwendung in der Arduino IDE muß es 
ja unbedingt C oder C++ sein :-(

> Wäre das hier eine C++-NG, würde ich Dir eben ein komplettes Beispiel
> hintippen, aber in d.s.e ist das doch arg off-topic.

Zugegeben, in dieser Gruppe findet sich bereits mehr off-topic als 
Antworten auf Fragen, aber kurze konkrete Antworten würden helfen, 
weiteren Traffic überflüssig zu machen :-]

DoDi

Back to de.sci.electronics | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

C++ method pointer? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2016-03-09 18:14 +0100
  Re: C++ method pointer? Christian Zietz <newsgroup.1001@chz.xyz> - 2016-03-09 18:24 +0100
    Re: C++ method pointer? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2016-03-09 19:43 +0100
      Re: C++ method pointer? Christian Zietz <newsgroup.1001@chz.xyz> - 2016-03-09 20:03 +0100
        Re: C++ method pointer? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2016-03-09 20:29 +0100
          Re: C++ method pointer? Christian Zietz <newsgroup.1001@chz.xyz> - 2016-03-09 20:47 +0100
    Re: C++ method pointer? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2016-03-09 19:57 +0100
  Re: C++ method pointer? Thorsten Böttcher <thorsten_nospam@gmx.net> - 2016-03-09 19:49 +0100
    Re: C++ method pointer? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2016-03-09 20:11 +0100
      Re: C++ method pointer? Thorsten Böttcher <thorsten_nospam@gmx.net> - 2016-03-09 20:35 +0100
        Re: C++ method pointer? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2016-03-09 22:31 +0100
          Re: C++ method pointer? Thorsten Böttcher <thorsten_nospam@gmx.net> - 2016-03-10 06:45 +0100
            Re: C++ method pointer? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2016-03-10 16:59 +0100
  Re: C++ method pointer? Marc Santhoff <m.santhoff@t-online.de> - 2016-03-09 20:47 +0100
    Re: C++ method pointer? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2016-03-09 22:33 +0100
      Re: C++ method pointer? Christian Zietz <newsgroup.1001@chz.xyz> - 2016-03-09 23:11 +0100
      Re: C++ method pointer? Marc Santhoff <m.santhoff@t-online.de> - 2016-03-10 01:29 +0100
        Re: C++ method pointer? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2016-03-11 13:24 +0100
  Re: C++ method pointer? Edzard Egberts <ed_09@tantec.de> - 2016-03-10 08:51 +0100
    Re: C++ method pointer? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2016-03-10 16:33 +0100
  Re: C++ method pointer? Heinz Saathoff <newshsaat@arcor.de> - 2016-03-10 09:14 +0100
    Re: C++ method pointer? Hans-Peter Diettrich <DrDiettrich1@aol.com> - 2016-03-10 16:42 +0100
      Re: C++ method pointer? Edzard Egberts <ed_09@tantec.de> - 2016-03-10 19:12 +0100
        Re: C++ method pointer? Edzard Egberts <ed_09@tantec.de> - 2016-03-11 08:04 +0100
        Re: C++ method pointer? Heinz Saathoff <newshsaat@arcor.de> - 2016-03-11 09:14 +0100

csiph-web