Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » generische Programierung Verständnisproblem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
06.04.2021, 19:54 Uhr
mirrowwinger



Hallo an alle,

ich bin neu hier, falls ich etwas mit dem Beitrag falsch mache, bitte ich im Vornherein um Entschuldigung.

Meine Frage bezieht sich auf die generische Programmierung mit der ich mich derzeit beschäftige. Hierzu habe ich mir eine kleine Union geschaffen, die auch wie erwartet funktioniert:

C++:
// implementierung
template<typename T>
union generic_u{
  T   value;
  char buffer[sizeof(T)];
};

// Verwendung
generic_u<int> test;
test.value = 10;



Jetzt wollte ich dies bei einer Funktion verwenden. Funktionsdeklaration:

C++:
// Implementierung
template<typename T>
generic_u<T> swap_generic_u(generic_u<T> gen,
                            int value) {
  
  // Funktionsrumpf, welcher funktioniert

}



Der Aufruf funktioniert so lange ich JEDE einzelne Verwendungsart mit den Variablen bekannt gebe, was sich für mich nicht richtig anfühlt (kann mich hier irren). Folgendes funktioniert, wobei ich die vorherige Bekanntgabe zur Verwendung für das "int" eigentlich sparen wollte, da ich auch short, long, ... verwenden will und damit weitere Zeilen notwendig werden:

C++:
// die folgende Zeile ist notwendig, damit es keinen Fehler gibt, WARUM?
template generic_u<int>swap_generic_u<int>(generic_u<int>, int value);

// Funktionsaufruf
test = mhutils::swap_generic_u<int>(test, value);



Gibt es eine Möglichkeit die angesprochene Zeile weg zu lassen? Nach dem was ich gelesen habe, sollte diese nicht notwendig sein, da es ja ein einziger verwendeter Variablentyp ist und der cpp-Kompiler diese eigentlich selbständig erkennen soll.

Vielen Dank
mirrowwinger
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.04.2021, 13:42 Uhr
ao

(Operator)


Wenn ich dich richtig verstanden habe, lautet die Antwort: Ja, das sollte funktionieren.

Bitte poste ein kurzes aber vollständiges Codebeispiel, das dein Problem verdeutlicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: