Tôi có vectơ con trỏ. Tôi muốn gọi hàm cho mọi phần tử, nhưng hàm đó có tham chiếu. Có một cách đơn giản để dereference các yếu tố?Sử dụng for_each và boost :: liên kết với vectơ của con trỏ
Ví dụ:
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));
}
tôi có thể tạo ra một wrapper bẩn ít mà mất một con trỏ, nhưng tôi figured có phải là một cách tốt hơn?
Có lý do nào bạn đang sử dụng 'boost :: ref (* this)' không? Tôi chỉ sử dụng: boost :: bind (& MyClass :: ReferenceFn, this, _1) và nó hoạt động tốt. –