İşaretçilerden oluşan bir vektör var. Her eleman için bir işlevi çağırmak istiyorum, ancak bu fonksiyon bir referans alır. Unsurları ortadan kaldırmak için basit bir yol var mı?For_each ve boost'u kullanma :: işaretçi bir vektörle bağlama
Örnek:
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));
}
Ben bir işaretçi alır kirli küçük sarmalayıcı oluşturmak olabilir, ama orada anladım daha iyi bir yolu olmalıydı?
Boost :: ref (* this) 'işlevini kullanmanın bir nedeni var mı? Ben sadece kullanıyorum: boost :: bind (& MyClass :: ReferenceFn, bu, _1) ve iyi çalışıyor. –