मेरे पास पॉइंटर्स का वेक्टर है। मैं प्रत्येक तत्व के लिए एक फ़ंक्शन कॉल करना चाहता हूं, लेकिन वह फ़ंक्शन एक संदर्भ लेता है। तत्वों को कम करने का कोई आसान तरीका है?for_each और boost :: का उपयोग करना पॉइंटर्स के वेक्टर के साथ बाध्य
उदाहरण:
MyClass::ReferenceFn(Element & e) { ... }
MyClass::PointerFn(Element * e) { ... }
MyClass::Function()
{
std::vector< Element * > elements;
// add some elements...
// This works, as the argument is a pointer type
std::for_each(elements.begin(), elements.end(),
boost::bind(&MyClass::PointerFn, boost::ref(*this), _1));
// This fails (compiler error), as the argument is a reference type
std::for_each(elements.begin(), elements.end(),
boost::bind(&MyClass::ReferenceFn, boost::ref(*this), _1));
}
मैं एक गंदा थोड़ा आवरण है कि एक सूचक लेता है बना सकते हैं, लेकिन मैं वहाँ लगा एक बेहतर तरीका होना था?
क्या कोई कारण है कि आप 'boost :: ref (* this) 'का उपयोग कर रहे हैं? मैं बस उपयोग करता हूं: boost :: bind (& MyClass :: ReferenceFn, this, _1) और यह ठीक काम करता है। –