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


Groups > de.sci.electronics > #203908

Re: C++ method pointer?

From Thorsten Böttcher <thorsten_nospam@gmx.net>
Newsgroups de.sci.electronics
Subject Re: C++ method pointer?
Date 2016-03-09 20:35 +0100
Organization albasani.net
Message-ID <nbpttb$d2q$1@news.albasani.net> (permalink)
References <dkb40lFph51U1@mid.individual.net> <nbpr73$77j$1@news.albasani.net> <dkbar9FrbmbU1@mid.individual.net>

Show all headers | View raw


Am 09.03.2016 um 20:11 schrieb Hans-Peter Diettrich:
> Thorsten Böttcher schrieb:
>> Am 09.03.2016 um 18:14 schrieb Hans-Peter Diettrich:
>>> Problem: eine Klasse implementiert mehrere (gleichartige) Methoden, von
>>> denen eine bestimmte zur Laufzeit aufgerufen werden soll. Leider sind
>>> meine C++ Kenntnisse sehr angestaubt, ich komme nicht drauf wie sich das
>>> mit einem Methoden-Pointer erledigen läßt :-(
>>
>> Kann man machen, ist aber unschön. Stichwort Funktoren.
>> Um Memberfunktionen aufzurufen brauchst Du den Zeiger auf das Objekt.
>
> Deshalb wollte ich ja die Methode innerhalb des Objekts aufrufen, dann
> ist die Instanz ja bereits bekannt (this).

Das stimmt, ändert aber nichts daran dass man ihn braucht.
>
>> Wieviel verschiedene Dekoder gibt es denn?
>
> Etwa 10, Tendenz steigend. Zudem hätte ich gerne noch eine Möglichkeit,

Dann ein Interface, bzw. abstrakte Klasse, da es in C++ keine Interfaces 
gibt, und dann das passende Objekt erzeugen. Hat Christian bereits 
geschrieben.

Das könnte im prinzip Dein Singleton machen.

>> Entweder Du baust Dir ein Interface, und erzeugst Dir passende Objekte
>> je nachdem was Du brauchst,
>
> Das riecht für mich nach einem Template, und da kenne ich mich auch
> nicht (mehr) aus :-(

Nein, dazu braucht man keine Templates.

>> oder Du erledigst das einfach mit ner if-Abfrage, oder mit einem
>> switch case Block.
>>
>> begin(IRecv::DecodeNEC);
>>
>> IRecv::read()
>> {
>>   if (decoder==DecoderNEC)
>>     return decodeNEC;
>>   else
>>     return decodeSony();
>> }
>
> Das hat den Nachteil, daß alle angegebenen Decoder ins Programm
> eingebunden werden, und das möchte ich vermeiden. Der Linker ist ja
> schon so clever, daß er unbenutze Methoden wegläßt, man muß nur noch
> vermeiden, daß diese irgendwo in der Bibliothek referenziert werden.

Wenn die Dekoder zur Laufzeit ausgewählt werden sollen, dann müssen Sie 
zwangsläufig im Programm sein.
Oder willst Du vor dem Kompilieren entscheiden welcher Dekoder benutzt wird?

MfG

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