template
-
Hallo,
habe gerade mit dem Kapitel Templates begonnen.
Irgendwie sind da noch so einige Lücken bei mir.
Warum klappt zum Beispiel dieser Code nicht???
Was habe ich (falsch) eingesetzt????#include <iostream> using namespace std; template <class T> T max(T eins, T zwei) { return (eins>zwei?eins:zwei); } int main(){ int one=4; int two=3; cout << "Template\n" << max(one,two) << endl; return 0; }
Gibt es empfehlenswerte Sites???
Danke schon mal
-
Hallo,
An für sich ist dein Code korrekt. Das einzige Problem ist, dass es bereits eine (Template) Funktion max im Namensraum std; gibt, und somit deine Template-funktion max eine nicht zulässige Überladung darstellt.Lösung: Einfach deine eigene template-Funktion in einen eigenen Namensraum packen.
namespace my_scope { template<class T> const T& max(const T& a, const T& b) { return ((a > b) ? a : b); } } ... //Aufruf z.B. my_scope::max(4, 5); ...
Ansonsten bzg. den Sachen, die ich an der Funktion anders machen würde, siehe obiger Code...
Caipi
-
Noch einfacher wäre, den qualifier für den globalen Namensraum voranzustellen, also
::max(a, b);