2015-09-05 33 views
-1
 void reset(const std::string& a, const std::string& b) const 
    { 
    std::for_each(this->begin(), this->end(), [&](const std::string& a, const std::string& b, ClassA* cv) 
      { 
     if(cv->getA == a && cv->getb == b) 
      cv->reset(); 
      }); 

    } 

有沒有簡單的方法來比較ClassA的成員函數與a和b與for_each?什麼是其他最佳解決方案?std :: for_each usage - >捕獲變量

+0

使其成爲'[&](ClassA * cv){...}'。捕獲「a」和「b」,不作爲參數傳入。這假定'this-> begin()'和'this-> end()'是迭代器到'ClassA * –

回答

1

做成[&](ClassA* cv){ ... }。參數ab由您的[&]捕獲,並在lambda中可用(它們不作爲參數傳遞)。

您還可以使用:

void reset(const std::string& a, const std::string& b) const { 
    for (auto cv : *this) 
     if(cv->getA == a && cv->getb == b) 
      cv->reset(); 
} 

這看起來有點清潔。