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 zuconst 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

-
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.