function adapters -> ein 'other_mem_fun' ?
-
Hallo Leute!
zB bei for_each kann man mittels mem_fun, mem_fun_ref und ptr_fun ja diverse funktionen und methoden so hinbiegen, dass for_each sie schluckt:
list<foo> fooList;
for_each(fooList.begin(), fooList.end(), mem_fun_ref(&foo::bar));doch hier muss ich eine methode von foo angeben.
was wenn ich aber eine methode eines anderen objektes angeben will?zB
fooFriend::foobar()
?das geht ja nicht.
gibt es etwas wiefooFriend ff;
other_mem_fun(&ff,&fooFriend::foobar);
?irgendwie finde ich keine moeglichkeit dies zu realisieren
und sogar Meyers schweigt sich in Effective STL darueber aus
-
bind1st oder so.
-
dank DieMumies Hilfe sieht der code jetzt so aus:
#include<iostream> #include<sstream> #include<vector> #include<algorithm> #include<functional> using namespace std; class Test { public: void foo(int i) const { cout<<i; } }; int main() { vector<int> V; V.push_back(1); V.push_back(7); V.push_back(3); Test t; for_each(V.begin(), V.end(), bind1st(mem_fun_ref(&Test::foo),t)); }
doch irgendwie stoert mich das const bei foo.
das muss doch wegzubekommen sein, oder?
-
ok, sache ist erledigt:
einfach mem_fun statt mem_fun_ref verwenden und &t statt t
-
@Shade: Aber das mit mem_fun war doch genau das, was ich vorgeschlagen hatte? (im Chat)
PS: macht mal den confused smiley wieder ganz