Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » template / funktions - rückgabe

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
27.01.2007, 13:26 Uhr
Suba Esel



Folgendes Programm funktioniert nicht:


C++:
#include <iostream>
#include <sstream>

template<typename TO, typename FROM >
TO change(FROM& from)
{
    std::stringstream sstr;
    sstr << from;
    TO to;
    sstr >> to;
    return to;
}

int main()
{
    std::string test = "Hallo ";
    for (int i = 1; i < 11; ++i)
    {
        change<std::string>(i);
        test += i;
    }
    std::cout << test;
    std::cin.get();
}



Dabei müsste change() doch IMO i ändern, da ich FROM& benutzt habe, oder?

Wenn ich dagegen test += change<std::string>(i); benutze, funktioniert alles.
--
Simon

Dieser Post wurde am 27.01.2007 um 13:26 Uhr von Suba Esel editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.01.2007, 13:37 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
auch irgendwo logisch - du änderst dein i ja nicht, er wandelt dir das i in einen string um (kopiert es ja von "from" über den stringstream in einen string) und liefert den zurück, an "from" wird ja nichts verändert (btw da könnte man ein const hinmachen)
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.01.2007, 15:10 Uhr
0xdeadbeef
Gott
(Operator)


Willst du auf die Art zur Laufzeit den Typ von i ändern? Das geht nicht, da musste schon ne neue Variable für nehmen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.01.2007, 19:05 Uhr
Suba Esel



Nein, ich wollte den Typ nicht ändern, ich hab mich nur gewundert, warum

C++:
test += change<std::string>(i);
funktioniert und
C++:
change<std::string>(i);
test += i;
nicht

@FloSoft:
--
Simon

Dieser Post wurde am 27.01.2007 um 19:05 Uhr von Suba Esel editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.01.2007, 19:51 Uhr
0xdeadbeef
Gott
(Operator)


Weil i immer noch ein int ist.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.01.2007, 10:37 Uhr
xXx
Devil


Und nur der Rückgabewert von change in diesem Fall ein std::string ist.
 
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: