Invalid conversion und forbids comparison



  • <sstream>



  • Warum kommt dann jetzt immer das hier ?

    Functions.cpp: In function ‘std::vector<std::basic_string<char> > split(std::string, char)’:
    Functions.cpp:67:26: error: ‘move’ is not a member of ‘std’
    Functions.cpp:71:26: error: ‘move’ is not a member of ‘std’
    make: *** [Functions.o] Error 1



  • #include <utility>

    C++0x musst du auch aktivieren, ansonsten die moves weglassen. (Dadurch wird der Code aber ineffizienter.)



  • Wenn ich die moves weglassen möchte und nicht auf dieses C++0X aufsteigen, reicht es wenn ich std::move wegmache oder muss ich noch was anderes machen ?



  • Du willst aber auf den C++0x Zug aufspringen, denn das ist die Zukunft.
    Nein, musst du nicht, aber du solltest den Parameter zu

    const std::string&
    

    ändern.

    Edit: Unter Visual Studio ist C++0x übrigens von Haus aus aktiviert, wenn du die 10er Version hast.



  • Die aktuelle Funktion schaut so aus, bringt aber noch nciht ganz das erwünschte ... 😞

    std::vector<std::string> split(const std::string& text, char delim) 
    { 
        std::stringstream ss(text); 
        std::vector<std::string> result; 
    
        while(std::getline(ss, text, delim)) 
            result.push_back(text); 
    
        return result; 
    }
    

    Functions.cpp: In function ‘std::vector<std::basic_string<char> > split(const std::string&, char)’:
    Functions.cpp:69:39: error: no matching function for call to ‘getline(std::stringstream&, const std::string&, char&)’
    make: *** [Functions.o] Error 1



  • Öh ja. Sorry, da hab ich mich doch glatt vertan. Bau sie so um:

    std::vector<std::string> split(const std::string& text, char delim)
    {
        std::stringstream ss(text);
        std::vector<std::string> result;
    
        std::string substr;
        while(std::getline(ss, substr, delim))
            result.push_back(substr);
    
        return result;
    }
    

    Um nochmal meinen Edit zu wiederholen, falls du ihn überliest: Wenn du MSVC 10 verwendest, ist C++0x von Haus aus aktiviert.



  • 314159265358979 schrieb:

    Um nochmal meinen Edit zu wiederholen, falls du ihn überliest: Wenn du MSVC 10 verwendest, ist C++0x von Haus aus aktiviert.

    Ich hab hier ein Projekt, dass ich mit Linux machen soll...



  • Dann wäre das beim GCC --std=c++0x in der Kommandozeile 😉


  • Mod

    bluepeople12 schrieb:

    314159265358979 schrieb:

    Um nochmal meinen Edit zu wiederholen, falls du ihn überliest: Wenn du MSVC 10 verwendest, ist C++0x von Haus aus aktiviert.

    Ich hab hier ein Projekt, dass ich mit Linux machen soll...

    Alle gängigen Linuxcompiler kennen auch sehr viel von C++11 (tendenziell sogar viel mehr als MSVC). Gib mal -std=c++0x beim compilieren mit an.


Anmelden zum Antworten