Funktion funktioniert nicht



  • Hallo mal wieder!
    Meine Funktion liefert mir komisherweise keinen Wert zurück!
    Irgendwie scheine ich irgendetwas vergessen zu haben, aber ich komm nicht drauf was! 😕
    Aber seht selbst:
    Header-File:

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <sstream> 
    using namespace std;
    
    //Folgende Funktionen prüfen die zu verwendenden variablen auf ihre kompatibilität
    //mit der in diesem header verwendbaren.
    template<class T>
    bool check(T t) {return false;}
    template<> bool check(string t) {return true;}
    template<> bool check(char* t) {return true;}
    template<> bool check(char t) {return true;}
    template<class T>
    bool convert(T t, string transfer)
    {
    if(!check(t))
    {
         ostringstream zahl;
         zahl << t;
         transfer = zahl.str();
         cout << "transfer: " << transfer << endl; //liefert den wert '22'
         return true;
    }     
    else
        return false;
    }
    

    Main-file:

    #include <iostream>
    #include <header1.h>
    using namespace std;
    
    int main()
    {
        int e=22;
        string readin;
        string test;
        char data[10] = "h.txt";
    
        read(readin, data); //Funktion tut eig. nichts zur sache
        cout << "h.txt:\n" << readin << endl;
        cout << check(e) << endl; // prüft den Typ
    
                    convert(e, test); //...und hier irgendwo klemmts...
    
        cout << "test: " << test << endl; //...da hier kein wert ausgegeben wird
    write(test, data);
        system("pause");
    }
    

    Für Hilfe wäre ich sehr dankbar... wirklich!



  • Du musst an die convert-Funktion eine String-Referenz übergeben, wenn du den Originalstring verändern willst. Ansonsten verändert du nur die Kopie.

    bool convert(T t, string transfer)
    -->
    bool convert(T t, string &transfer)
    


  • es muss wohl

    bool convert(T t, string& transfer)
    

    statt

    bool convert(T t, string transfer)
    

    heißen, dann sollte es funktionieren



  • Ahh! ja! jetzt läufts 😃 😃 😃 mist...an die Referenz hab ich nicht gedacht! Vielen vielen Dank für die schnelle Antwort!


Anmelden zum Antworten