He aquí una idea general de cómo mi clase se define como (que realiza otras operaciones de lo que se menciona más adelante)std :: uso for_each en función miembro con dos argumentos
struct Funktor
{
Funktor(int val):m_val(val){}
bool operator()(int arg1, int arg2) { return m_val==arg1*arg2; }
int m_val;
};
y ahora tengo un vector de los objetos anteriores, y estoy tratando de llamar a operator() usando for_each, ¿hay alguna manera de hacer esto? Sé que se puede hacer usando bind2nd y mem_func_ref, pero cuando solo hay un argumento, pero para dos argumentos, no he encontrado la manera.
int main()
{
std::vector<Funktor> funktors;
funktors.push_back(Funktor(10));
funktors.push_back(Funktor(20));
funktors.push_back(Funktor(30));
int arg1 = 5, arg2 = 6;
//instead of the for loop below I want to use for_each
for(std::vector<Funktor>::iterator itr = funktors.begin(); funktors.end() != itr; ++itr)
{
(*itr)(arg1,arg2);
}
}
Gracias por cualquier ayuda. Mejor.
CV
¿Puedes aclarar por qué quieres hacer esto? Parece efectivamente un no-op. –
@Mark: ¿Quiere decir que el operador() no hace nada? Fue solo para dar una idea de la estructura de mi clase. – blueskin
@blueskin: Quiere decir que 'std :: for_each' descarta los resultados del functor, por lo que los 'bool's devueltos nunca se usarán, lo que hace que esta muestra en particular no tenga sentido. – ildjarn