How can I store a boost::bind object as a class member?

前端 未结 4 1979
甜味超标
甜味超标 2020-12-21 00:45

I\'m writing an application that uses boost::asio. Asio\'s async_receive (or async_read) is invariably shown using a boost::bind

4条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-21 01:08

    Use boost::function:

    class Whatever
    {
    public:
        Whatever()
        {
            functor = boost::bind(
                &chat_session::handle_read_header,
                shared_from_this(),
                boost::asio::placeholders::error,
                boost::asio::placeholders::bytes_transferred
            );
            boost::asio::async_read(
                socket_,
                boost::asio::buffer(
                   read_msg_.data(),
                   chat_message::header_length
                ),
                functor
            );
        }
    private:
        boost::function functor;
    };
    

    ... or something like that.

提交回复
热议问题