Template Funktionen



  • #include <iostream>
    using namespace std;
    
    template<typename T>
    bool kleiner(const T a){
    	return a > 20;
    }
    template<>
    bool kleiner<double>(const double a){
    	cout << "Aufruf double" << endl;
    	return a > 20;
    }
    template<>
    bool kleiner<int>(const int a){
    	cout << "Aufruf Integer" << endl;
    	return a > 20;
    }
    
    template<typename T>
    void ausgabe(const T& a){
    	cout << a << endl;
    }
    
    template<>
    void ausgabe<char>(const char& a){
    	cout << "Char" << endl;
    }
    
    template<>
    void ausgabe<int>(const int& a){
    	cout << "Int" << endl;
    }
    
    int main(){
    	double d = 20;
    	int a = 1;
    	kleiner(d);
    	kleiner(a);
    
    	system("Pause");
    }
    

    Wieso kann ich nur 2 spezielle Template Funktionen verwenden?



  • Hä?

    Was?? 😕


  • Mod

    Wieso kann ich nur 2 spezielle Template Funktionen verwenden?

    Du meinst wohl "Wieso kann ich Funktionstemplates nur zweimal spezialisieren".

    Und das stimmt nicht, du kannst deine Funktionstemplates für jedes Template-Argument spezialisieren.



  • Du meinst wohl "Wieso kann ich Funktionstemplates nur zweimal spezialisieren".

    Ja genau das meine ich.

    Und das stimmt nicht, du kannst deine Funktionstemplates für jedes Template-Argument spezialisieren.

    Jedesmal wenn ich versuche mehr als 2 Funktionstemplates zu spezialisieren erhalte ich eine fehlermeldung 😕


  • Mod

    Soll ich den Code erraten mit dem du es versuchst.. ?

    Poste ihn mal, dann sehen wir weiter.



  • template<typename T>
    void ausgabe(const T& a){
    	cout << a << endl;
    }
    
    template<>
    void ausgabe<char>(const char& a){
    	cout << "Char" << endl;
    }
    
    template<>
    void ausgabe<int>(const int& a){
    	cout << "Int" << endl;
    }
    void ausgabe<double>(const double& a){
    	cout << "Double" << endl;
    }
    


  • Achso jetzt sehe ich den Fehler ich habe
    template<>
    vergessen vor zu schreiben



  • Du hast ein template<> vergessen.

    Edit: Zu spaet.


Anmelden zum Antworten