2009-07-04 4 views
2

JeY a-t-il un foncteur qui déréfine un pointeur (intelligent), le met en surbrillance, puis appelle une méthode dessus?

class A: public B { ...} 

vector<A*> v; 

Je veux faire

for_each(v.begin(), v.end(), mem_fun_deref(B::blah())); 

(En fait, je:

vector<unique_ptr<A>> 

mais il ne devrait pas importer)

Je dois transtyper et appelle la fonction membre.

+0

Je ne me dérange pas en utilisant coup de pouce, mais en réalité il est plus compliqué - je dois transtyper puis appeler la fonction membre –

Répondre

4

boost::lambda peut le faire

vector<A*> v; ... 
using boost::lambda::_1; 
using boost::lambda::bind; 
for_each(v.begin(), v.end(), bind(&B::blah, *_1)); 

Pas besoin de transtyper. Un pointeur de membre vers un membre de classe de base peut également être appliqué à une classe dérivée.

#include <boost/lambda/lambda.hpp> 
#include <boost/lambda/bind.hpp> 
+0

merci! . –

Questions connexes