eine Funktion, 2 mögliche Rückgabewerte

OP #2402542
Lesenswert?
• ▲
▼
Hallo zusammen,

ich grüble schon einige Zeit an folgendem Problem (C++):

Wenn ich eine Funktion habe, meinetwegen "read", dann kann ich durch 
Überladung erreichen, das ich ihr entweder ein uint8_t oder ein uint16_t 
übergeben kann und es wird automatisch die passende Funktion aufgerufen.

Was ist aber wenn die Funktion je nach an anderer Stelle stehender 
Konfiguration einen uint8_t oder einen uint16_t als Rückgabewert 
produziert?

Gibt es für so was eine Patentlösung?

Ich möchte vermeiden Standardmäßig ein uint16_t zurück zu bekommen und 
immer casten zu müssen.

Gruss Elias
#2402562
Lesenswert?
• ▲
▼
Templates?
1
#include <stdint.h>
2
#include <iostream>
3
#include <fstream>
4

5

6
// liest ein T aus f und liefert es zurück
7
template< typename T > T read( std::ifstream &f )
8
{
9
  T    value;
10
  f.read( reinterpret_cast<char*>(&value), sizeof(T) );
11

12
  // etwas Fehlerbehandlung könnte nicht schaden...
13

14
  return value;
15
}
16

17
int main( int nargs, char **args )
18
{
19
  std::ifstream     datei( "verweis.txt", std::ios::binary );
20

21
  uint8_t      ui8;
22
  ui8 = read<uint8_t>( datei );
23
  std::cout << " 8 Bit: 0x" << std::hex << (unsigned)ui8 << std::endl;
24

25
  uint16_t      ui16;
26
  ui16 = read<uint16_t>( datei );
27
  std::cout << "16 Bit: 0x" << std::hex << (unsigned)ui16 << std::endl;
28

29
  return 0;
30
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.