Referenzen und bind
-
Folgender Code:
#include <iostream> #include <boost/thread/thread.hpp> #include <boost/bind.hpp> void asd(std::string &Text1,std::string &Text2) { Text1 = "2"; Text2 = "2"; } int main(int argc, char *argv[]) { std::string Text1("1"); std::string Text2("1"); boost::thread bla(boost::bind(asd, Text1, Text2)); bla.join(); std::cout << Text1 << Text2 << std::endl; system("PAUSE"); return EXIT_SUCCESS; }gibt 11 aus, obwohl er eigentlich 22 ausgeben sollte. Wenn ich statt Referenzen Zeiger nehmen, klappt's. Ich vermute, dass bei der Übergabe an bind, der Kopierkonstruktor von std::string aufgerufen wird. Ist es irgentwie möglich das auch mit Referenzen zu lösen?
mfg.
-
boost::thread bla( boost::bind(asd, boost::ref(Text1), boost::ref(Text2)) );Gruß
Werner