java方法如何传递引用_C如何将类方法传递给一个要求引用可调用的函数

我想将一个类方法(绑定到一个对象)传递给一个库中的函数,该函数要求对一个可调用的非const引用 .

如果没有通过引用询问参数,它将与std :: bind完美配合 . 我不知道为什么通过引用询问它,我无法改变它 .

有没有办法让std :: bind的结果成为左值?或者我应该重做一切吗?

这是一个显示问题的代码:

#include

#include

#include

using namespace std::placeholders;

// code in a lib that i cannot change

class Agent {

public:

template

void register_handler(functor & f) {

// f is stored in data member "functor & f_;" of connection_event_generic_dispatcher in initializer list of ctor.

std::auto_ptr<:connection_event_dispatcher_base> monitor(new details::connection_event_generic_dispatcher(f));

pimpl_base_->register_connection_event_monitor(monitor);

}

};

// code i can edit

class PersistentConnection {

public:

PersistentConnection(): data_member_("world") {

agent_.register_handler(std::bind(&PersistentConnection::internal_handler, this, _1));

}

private:

void internal_handler(std::string message) {

std::cout << message << " " << data_member_ << std::endl;

}

std::string data_member_;

Agent agent_;

};

int main (int argc, char** argv) {

PersistentConnection p;

return 0;

}

编译命令行和错误:

clang --std = c 11 /tmp/test.cpp -o / tmp / test /tmp/test.cpp:20:10:错误:没有匹配的成员函数来调用'register_handler'agent_.register_handler(std :: bind(&PersistentConnection :: internal_handler,this,_1)); ~~~~~~~ ^ ~~~~~~~~~~~~~~~~ / tmp / test.cpp:10:7:注意:候选函数[有functor = std :: _ Bind)>(PersistentConnection) *,std :: _ Placeholder <1>)>]不可行:期望第一个参数的l值为void register_handler(functor&f){^ 1生成错误 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值