boost :: bind es extremadamente útil en una serie de situaciones. Una de ellas es enviar/publicar una llamada de método para que io_service realice la llamada más adelante, cuando sea posible.¿Cómo se pueden impulsar :: métodos privados de llamada de enlace?
En tales situaciones, boost :: bind se comporta como uno podría esperar que cándidamente:
#include <boost/asio.hpp>
#include <boost/bind.hpp>
boost::asio::io_service ioService;
class A {
public: A() {
// ioService will call B, which is private, how?
ioService.post(boost::bind(&A::B, this));
}
private: void B() {}
};
void main()
{
A::A();
boost::asio::io_service::work work(ioService);
ioService.run();
}
Sin embargo, por lo que yo sé impulso crea un functor (una clase con un operador()()) capaz de llama al método dado en el objeto dado. ¿Debería esa clase tener acceso a la B privada? Supongo que no.
¿Qué me falta aquí?
Lo mismo es cierto para los punteros regulares a métodos estáticos privados. – MSalters