Adr*_*ire 0 c++ lambda member c++11
我想实现一个成员函数,该函数获取指向其他成员函数的指针并返回静态绑定.可能是什么:a lambda或a? std::function.
从那时起,我在C++ 11中做了以下意图但没有成功:
#include <functional>
#include <iostream>
class MyClass{
public:
auto link( std::function<void(MyClass::*)(int)> func)->std::function<void(int)>
{
return [this, func](int i){func(i);};
}
auto myFunc(int i)->void { std::cout << "Ok:" << i << std::endl; }
auto test ()->void
{
link(&MyClass::myFunc)(4);
}
};
auto main()->int
{
MyClass c;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
专业化std::function<T>如果只被定义T为函数类型.没有std::function<T>地方T是指向成员函数类型.无论如何,std::function如果你只想传递指向成员函数的指针,那么构造一个参数是没有意义的.您可以直接这样做:
auto link(void (MyClass::*func)(int))->std::function<void(int)>
Run Code Online (Sandbox Code Playgroud)
必须使用.*or ->*运算符调用指向成员函数的指针,并在左侧使用适当类的表达式或指向类类型的指针(分别).因此在这种情况下你可以写:
return [this, func](int i){(this->*func)(i);};
Run Code Online (Sandbox Code Playgroud)