C ++ / Boost:将成员函数作为参数传递给boost :: bind

朱拉·马萨(JurajMasár)

我对C ++还是很陌生,所以请不要评判我:-)

我有一个connection包含以下方法的类:

    void connection::handle_connect(const boost::system::error_code& err) {
        if (!err) {
            boost::asio::async_write(socket_, request_,
                boost::bind(&connection::handle_write_request, this,
                boost::asio::placeholders::error, &connection::handle_read_status_line));
        } else {
            std::cout << "Error in handle_connect: " << err.message() << "\n";
        }
    }

    void connection::handle_write_request(const boost::system::error_code& err, boost::function<void(const boost::system::error_code&)> callback) {
        if (!err) {
            boost::asio::async_read_until(socket_, response_, 0,
                boost::bind(&callback, this,
                boost::asio::placeholders::error));
        } else {
            std::cout << "Error in handle_write_request: " << err.message() << "\n";
        }
    }

    void connection::handle_read_status_line(const boost::system::error_code& err) {
        if (!err) {
            std::istream response_stream(&response_);
            std::string response;
            std::getline(response_stream, response);
            std::cout << "Response: " << response << std::endl;
        } else {
            std::cout << "Error in handle_read_status_line: " << err << "\n";
        }
    }

并且我正在尝试使该handle_write_request方法更具通用性。我已经添加callback了它的签名-这应该是传递给boost::bind并在中作为回调调用的方法的地址boost::asio::async_read_until

但是,这甚至不能编译:-) MSVS2013在说

    Error   1   error C2825: 'F': must be a class or namespace when followed by '::'    C:\local\boost_1_55_0\boost\bind\bind.hpp   69  1   driver
    Error   2   error C2039: 'result_type' : is not a member of '`global namespace''    C:\local\boost_1_55_0\boost\bind\bind.hpp   69  1   driver
    Error   3   error C2146: syntax error : missing ';' before identifier 'type'    C:\local\boost_1_55_0\boost\bind\bind.hpp   69  1   driver
    Error   4   error C2208: 'boost::_bi::type' : no members defined using this type C:\local\boost_1_55_0\boost\bind\bind.hpp  69  1   driver
    Error   5   error C1903: unable to recover from previous error(s); stopping compilation C:\local\boost_1_55_0\boost\bind\bind.hpp   69  1   driver

如何正确传递成员函数的地址?如有任何建议,我将不胜感激!

要绑定类的成员函数,请执行以下操作:

boost::bind(&SomeClass::SomeMemberFunc, this, params...);

就您而言,callback已经是一个函子,所以请尝试boost::bind(callback, this, <some proper parameter>);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用C ++将成员的名称从结构作为参数传递给函数?

来自分类Dev

使用boost :: bind传递成员函数

来自分类Dev

将boost :: bind成员函数传递给wt监听器..我做错了什么?

来自分类Dev

将boost :: bind成员函数传递给wt监听器..我做错了什么?

来自分类Dev

将成员函数指针传递给C样式函数

来自分类Dev

如何使用boost :: bind将成员函数绑定到ANY对象

来自分类Dev

C ++ 11-将成员函数传递给线程会给出:没有重载函数需要2个参数

来自分类Dev

Boost C ++。将带有签名指针的成员函数指针传递给函数

来自分类Dev

使用 boost::bind 结果作为参数

来自分类Dev

将成员函数作为参数传递给函数模板

来自分类Dev

将结构成员作为参数传递给C中的函数

来自分类Dev

如何在C ++和Boost中将数组参数传递给TCP客户端的函数

来自分类Dev

将成员函数指针作为参数传递给模板方法

来自分类Dev

std :: bind与成员函数,在c ++中

来自分类Dev

std :: bind与成员函数,在c ++中

来自分类Dev

C ++将成员函数传递给另一个类

来自分类Dev

将成员函数传递给任意精度的C ++正交库(Quadpack ++)

来自分类Dev

C ++如何将成员函数指针传递给另一个类?

来自分类Dev

将成员函数传递给任意精度的C ++正交库(Quadpack ++)

来自分类Dev

C ++将成员变量传递给成员类

来自分类Dev

将unique_ptr引用传递给boost :: bind吗?

来自分类Dev

将Java脚本函数作为参数传递给C ++函数

来自分类Dev

在C ++中将void函数作为参数传递给double函数

来自分类Dev

C ++ Boost函数回调。如何调用函数作为回调并在内部传递参数?

来自分类Dev

ROS 订阅回调 - 使用 boost::bind 和成员函数

来自分类Dev

如何指定一个可以接受boost :: bind'ed函数的c ++函数指针

来自分类Dev

C ++:使用io.post和bind命令从boost线程在主线程中执行函数

来自分类Dev

存储具有不同类型的函数指针C ++ boost :: bind

来自分类Dev

存储具有不同类型的函数指针C ++ boost :: bind

Related 相关文章

  1. 1

    如何使用C ++将成员的名称从结构作为参数传递给函数?

  2. 2

    使用boost :: bind传递成员函数

  3. 3

    将boost :: bind成员函数传递给wt监听器..我做错了什么?

  4. 4

    将boost :: bind成员函数传递给wt监听器..我做错了什么?

  5. 5

    将成员函数指针传递给C样式函数

  6. 6

    如何使用boost :: bind将成员函数绑定到ANY对象

  7. 7

    C ++ 11-将成员函数传递给线程会给出:没有重载函数需要2个参数

  8. 8

    Boost C ++。将带有签名指针的成员函数指针传递给函数

  9. 9

    使用 boost::bind 结果作为参数

  10. 10

    将成员函数作为参数传递给函数模板

  11. 11

    将结构成员作为参数传递给C中的函数

  12. 12

    如何在C ++和Boost中将数组参数传递给TCP客户端的函数

  13. 13

    将成员函数指针作为参数传递给模板方法

  14. 14

    std :: bind与成员函数,在c ++中

  15. 15

    std :: bind与成员函数,在c ++中

  16. 16

    C ++将成员函数传递给另一个类

  17. 17

    将成员函数传递给任意精度的C ++正交库(Quadpack ++)

  18. 18

    C ++如何将成员函数指针传递给另一个类?

  19. 19

    将成员函数传递给任意精度的C ++正交库(Quadpack ++)

  20. 20

    C ++将成员变量传递给成员类

  21. 21

    将unique_ptr引用传递给boost :: bind吗?

  22. 22

    将Java脚本函数作为参数传递给C ++函数

  23. 23

    在C ++中将void函数作为参数传递给double函数

  24. 24

    C ++ Boost函数回调。如何调用函数作为回调并在内部传递参数?

  25. 25

    ROS 订阅回调 - 使用 boost::bind 和成员函数

  26. 26

    如何指定一个可以接受boost :: bind'ed函数的c ++函数指针

  27. 27

    C ++:使用io.post和bind命令从boost线程在主线程中执行函数

  28. 28

    存储具有不同类型的函数指针C ++ boost :: bind

  29. 29

    存储具有不同类型的函数指针C ++ boost :: bind

热门标签

归档