Вот общее представление о том, как мой класс определяется как (он выполняет другие операции, кроме тех, которые упомянуты ниже)
struct Funktor
{
Funktor(int val):m_val(val){}
bool operator()(int arg1, int arg2) { return m_val==arg1*arg2; }
int m_val;
};
А теперь у меня есть вектор вышеуказанных объектов, и я пытаюсь вызвать operator () с помощью for_each, есть ли способ сделать это? Я знаю, что это можно сделать с помощью bind2nd и mem_func_ref, но когда есть только один аргумент, но для двух аргументов я не нашел пути.
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);
}
}
Спасибо за любую помощь. Лучший.
CV