Template in einer Klassenfunktion?



  • Hallo,

    ich lerne gerade C++ und bin nun auf die Templates gestoßen. Nun habe ich folgendes Programm:

    #include <iostream>
    #include <sstream>
    
    using namespace std;
    
    class Rechner
    {
    public:
    	std::string toString(float value) 
    	{ 
    		stringstream stream;
    
    		stream << value;
    
    		return stream.str();
    	};
    };
    
    int main()
    {
    	Rechner r;
    
    	std::string str = r.toString(5.3);
    
    	cout << str << endl;
    
    	system("pause");
    }
    

    Das macht jetzt für euch vielleicht nicht viel Sinn, einen Float in einen String umzuwandeln, aber es ist für mich wichtig.

    Nun möchte ich statt

    std::string toString(float value)
    

    lieber etwas dynamischer sein, sodass z. B. auch int oder double rein kann. Dies würde ich gern über die Templates realisieren. Wenn ich nun aber schreibe:

    std::string toString(template <class T> value)
    

    wird template unterstrichen: Error: "template" ist nicht zulässig.

    Was kann ich tun? Wie gesagt, ich würde schon gerne bei Templates bleiben und in einer Extra Klasse sollte die Funktion auch sein.

    Danke für Eure Hilfe

    LG



  • Wieso eine Memberfunktion? Die braucht keine Membervariablen, kann also statisch sein.
    -> Wieso eine statische Funktion? Das hier ist kein Java, man darf durchaus freie Funktionen schreiben. Das ist eine freie Funktion. Wenn du Namenskollisionen vermeiden willst, nimm einen Namespace.

    Und die Syntax für Templates ist für Member genauso wie für normale Funktionen auch.

    (BTW: C++11 hat eine std::to_string)


Anmelden zum Antworten