पाश के लिए एक परिवर्तित मैं पाश के लिए यह मिल गया है:एक एसटीडी करने के लिए :: for_each
std::vector<itemPtr>::iterator it;
for(it=items.begin(); it!=items.end(); ++it)
{
investigators.addToLeaderInventory(*it);
}
मैं यह कुछ इस तरह कन्वर्ट करने के लिए करना चाहते हैं:
std::for_each(items.begin(), items.end(), investigators.addToLeaderInventory);
हालांकि, उस रेखा संकलित नहीं है। जी ++ मुझे यह दिखाता है:
error: no matching function for call to
‘for_each(__gnu_cxx::__normal_iterator<std::tr1::shared_ptr<yarl::item::Item>*,
std::vector<std::tr1::shared_ptr<yarl::item::Item>,
std::allocator<std::tr1::shared_ptr<yarl::item::Item> > > >,
__gnu_cxx::__normal_iterator<std::tr1::shared_ptr<yarl::item::Item>*,
std::vector<std::tr1::shared_ptr<yarl::item::Item>,
std::allocator<std::tr1::shared_ptr<yarl::item::Item> > > >, <unresolved overloaded
function type>)’
/usr/include/c++/4.4/bits/stl_algo.h:4194: note: candidates are: _Funct
std::for_each(_IIter, _IIter, _Funct) [with _IIter =
__gnu_cxx::__normal_iterator<std::tr1::shared_ptr<yarl::item::Item>*,
std::vector<std::tr1::shared_ptr<yarl::item::Item>,
std::allocator<std::tr1::shared_ptr<yarl::item::Item> > > >, _Funct = void
(yarl::party::Party::*)(yarl::itemPtr)]
कम से कम कहने के लिए पढ़ने के लिए मुश्किल है। मुझे लगता है कि समाधान बहुत आसान है, लेकिन मैं यह नहीं समझ सकता कि जी ++ किस बारे में शिकायत कर रहा है।
void ClassName::addToLeaderInventory(itemPtr item);
जो एक for_each
साथ काम करना चाहिए, ऐसा नहीं होना चाहिए: investigators.addToLeaderInventory()
के हस्ताक्षर है? मुझे क्या बदलना चाहिए?
अगर आप को बढ़ावा देने का उपयोग करने को तैयार हैं, वहाँ उत्कृष्ट foreach कार्यान्वयन, BOOST_FOREACH – Anycorn