for_each mit Methoden-Zeiger
-
Hi
ist es moeglich, for_each mit einem Zeiger auf eine Klassenmethode aufzurufen, in etwa so:
class foo { public: void bar(int); void doBar(); private: list<int> list_; }; void foo::doBar() { for_each(list_.begin(), list_.end(), this::bar); }
der Code in foo::doBar() funktioniert natuerlich nicht, ist nur ein Beispiel um zu verdeutlichen was ich moecht... Gibts so etwas in der Art oder muss ich mir auf jeden Fall einen Funktor bauen?
-
probiers mit std::mem_func oder so ähnlich
-
Hallo,
kurz:
for_each(list_.begin(), list_.end(),
bind1st(mem_fun(&foo::bar), this));
dazu noch <functional> laden.länger: Das Problem ist, dass du einen Methodenzeiger mit gebundenem 'this' übergeben möchtest, was jedoch in C++ nicht geht. Deshalb muss man aus der Methode eine Funktion machen (besser Funktionsobjekt). mem_fun arbeitet mit Methoden die aus 0 oder 1 Parameter bestehen-> mem_fun(&foo::bar)
Diese 'Funktion' braucht nun 2 Parameter, einen Klassenzeiger(this) und ein int-Wert. Nun soll der erste Parameter an this gebunden werden: bind1st(this, ...).Grüße
Fux