std::thread with member function and parameter
-
Hi,
ich versuche mich gerade in Threads einzuarbeiten und mir erschließt sich ein Problem nicht.Ich kann Funktionen ohne Probleme an einen Thread hängen die keinen Parameter verlangen aber mit Parametern sieht es düster aus.
Ich kann den Code nicht kompilieren ich bekomme immer eine Fehlermeldung:Error: 3
error C2664: 'void std::_Pmf_wrap<void (__thiscall Init::* )(std::string),void,Init,std::string>::operator ()(_Farg0 &,std::string) const' : cannot convert argument 2 from 'Init *' to 'std::string'Mir ist überhaupt nicht klar was er da konvertieren will, wenn ich "this" wegnehme beschwert er sich über: error C2064: term does not evaluate to a function taking 1 arguments.
Der Vektor ist gefüllt und die strings auf die da gepointert wird werden von einem vector<string> gehalten.
Vereinfachter code:
class Action { public: Action(std::string * filename, int num) : filename_(filename), number_(num) {} ~Action(){} const std::string * const filename_; const int number_; }; class Init { public: Init() {} ~Init() {} private: std::vector<Action> names; void init() { sync(); } void sync() { for (auto cit = cbegin(working_list); cit != cend(workinglist); ++cit) { thread alpha(&Init::thread_write, cit->filename_->data(), this); } } void write(const string filename) {} };
Vielleicht habt ihr eine Idee.
-
OMG, sorry hat sich erledigt.
Lösung ist:
thread alpha(&Init::thread_write, this, cit->filename_->data());
Er wollte zu erst this.