C++ 如何在给定代码中翻译::*运算符和成员?

C++ 如何在给定代码中翻译::*运算符和成员?,c++,c++11,pointer-to-member,C++,C++11,Pointer To Member,据我所知:void(A::*p)(=&A::test_func表示p是指向成员函数的指针void a::test_func(),并且std::mem_fn(…)可用于包装指向成员函数的指针 但是在下面的代码片段中,我无法翻译void(Handler::*)()和Handler::*member_fn的意思 class Handler; std::pair<boost::shared_ptr<Handler>, void (Handler::*)()> cb = job_

据我所知:
void(A::*p)(=&A::test_func
表示
p
是指向成员函数的指针
void a::test_func()
,并且
std::mem_fn(…)
可用于包装指向成员函数的指针

但是在下面的代码片段中,我无法翻译
void(Handler::*)()
Handler::*member_fn
的意思

class Handler;

std::pair<boost::shared_ptr<Handler>, void (Handler::*)()> cb = job_queue.sync_pop();

void (Handler::*member_fn)() = cb.second;
(cb.first.get()->*member_fn)();
类处理程序;
std::pair cb=job_queue.sync_pop();
无效(处理人::*成员_fn)(=cb.second;
(cb.first.get()->*member_fn)();

它的意思正是您在第一段中所描述的:

// cb contains a shared pointer to an instance of Handler and a member function of Hander
std::pair<boost::shared_ptr<Handler>, void (Handler::*)()> cb = job_queue.sync_pop(); 

// assign the member function stored in cb.second to a local variable    
void (Handler::*member_fn)() = cb.second; 

(cb.first.get()->*member_fn)(); // call the function stored in member_fn on 
                                // the object held by cb.first
//cb包含指向Handler实例的共享指针和Hander的成员函数
std::pair cb=job_queue.sync_pop();
//将存储在cb.second中的成员函数分配给局部变量
无效(处理人::*成员_fn)(=cb.second;
(cb.first.get()->*member_fn)(;/)调用存储在成员_fn on中的函数
//cb持有的物品优先

如果这还不够清晰,您可以找到一个使用标准库类的最小示例,该示例执行相同的操作

创建一个。这意味着您在第一段中描述的内容。
member\u fn
意味着什么?执行此映射
member\u fn
->
p
Handler
->
A
。没有
std::member\u fn
。我猜你的意思是
std::mem\u fn
。但这与代码无关。
auto pair = job_queue.sync_pop();
auto function = std::bind(pair.second, pair.first.get());
function();
// cb contains a shared pointer to an instance of Handler and a member function of Hander
std::pair<boost::shared_ptr<Handler>, void (Handler::*)()> cb = job_queue.sync_pop(); 

// assign the member function stored in cb.second to a local variable    
void (Handler::*member_fn)() = cb.second; 

(cb.first.get()->*member_fn)(); // call the function stored in member_fn on 
                                // the object held by cb.first