Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Templates: Was ist hier falsch?

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 < [ 2 ]
000
18.03.2007, 11:48 Uhr
Getit



Hallo,

fange grade erst mit Templates an und bekomme hier nur Fehlermeldungen:


Code:
#include <iostream>
using namespace std;

template <class T> void swap(T &n1, T &n2);

int main()
{
    int wert1 = 10, wert2 = 20;
    swap(wert1, wert2);
    return 0;
}

template <class T> void swap(T &n1, T &n2)
{
    T tmp = n1;
    n1 = n2;
    n2 = tmp;
}



Was ist an diesem Code falsch?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.03.2007, 11:53 Uhr
Suba Esel



Mach aus dem "swap" ein "Swap" oder so etwas, die Funktion gibts schon. Ach ja, typename statt class.
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.03.2007, 11:55 Uhr
xXx
Devil


ka ob du das hier haben willst:

C++:
#include <iostream>

template <typename T> void swap(T&, T&);

int main()
{
    unsigned short value_one    = 10;
    unsigned short value_two    = 20;
    std::cout << "Value 1: " << value_one << " | Value 2: " << value_two << std::endl;
    swap<unsigned short>(value_one, value_two);
    std::cout << "Value 1: " << value_one << " | Value 2: " << value_two << std::endl;
}

template <typename T> void swap(T& n1, T& n2)
{
    T tmp = n1;
    n1 = n2;
    n2 = tmp;
}
...

Dieser Post wurde am 18.03.2007 um 11:56 Uhr von xXx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.03.2007, 11:58 Uhr
Suba Esel



Komisch, mir fällt grad auf dass das auch so funktioniert:

C++:
Swap(wert1, wert2);



Wieso eigentlich?
--
Simon
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.03.2007, 12:21 Uhr
Getit



Danke für die schnelle Hilfe!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.03.2007, 13:11 Uhr
Karldin Shinowa
Professional Noob


@suba esel

<typename T> und <class T> is doch das gleiche oder?
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.03.2007, 13:15 Uhr
Getit



Ich hab auch <class T> gelassen.

Erstens hab ichs so in der Uni gelernt, und zweitens stehts so in jedem C++ Buch das ich bisher gelesen hab.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
18.03.2007, 13:21 Uhr
Blubber2063



Suba Esel, du meinst jetzt das man keine Parameterisierung ranschreiben muss ?
Wenn ja, das liegt daran das bei Templates vermutlich auch Typinferenz gemacht wird, so das er an dem übergebenen Typ schaut, ob was passendes existiert und es dann nimmt, kann aber halt auch fehlschlagen. Sicherer ist in jedem Fall mit Parameterisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
18.03.2007, 13:25 Uhr
Kest
saint


Hi !
Ich würde das alles in ein namespace stecken (dafür gibt's sie doch)
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.

Dieser Post wurde am 18.03.2007 um 13:26 Uhr von Kest editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
18.03.2007, 13:52 Uhr
Suba Esel



@ Karldin Shinowa:
Kann sein, weiß ich nicht.
@ Getit:
Das mit dem "typename" hab ich hierher.
@ Blubber:
Jo, genau das mein ich.

EDIT:
Oh man, sieht mein Post blöde aus
--
Simon

Dieser Post wurde am 18.03.2007 um 13:52 Uhr von Suba Esel editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: