【发布时间】:2013-10-22 10:02:54
【问题描述】:
考虑以下代码:
//this is what I want to call; I cannot modify its signature
void some_library_method(void(*fp)(void));
class Singleton{
public:
static Singleton *instance();
void foo();
void bar();
private:
Singleton();
};
void Singleton::foo(){
//this leads to an error ('this' was not captured for this lambda function)
void(*func_pointer)(void) = []{
Singleton::instance()->bar();
};
some_library_method(func_pointer);
}
我想调用一个我无法修改的函数(参见some_library_methodabove),它需要一个函数指针作为参数。调用应在类成员foo() 中完成。我知道我不能在那里访问类成员,但我想做的就是以静态方式访问单例类(检索单例实例)。
有什么方法可以修改 lambda 表达式以显示目标编译器 g++ v4.7.2 确实不需要需要引用 this?
【问题讨论】: