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


Anmelden zum Antworten