这是一个相当不寻常的问题——但仍然是一个问题。我有一个接受 lambda 作为参数的函数,然后将其传递给QObject::connect
:
template<typename Functor>
void MyClass::doSomething(Functor f)
{
connect(network_reply, &QNetworkReply::finished, f);
//...
}
的示例调用MyClass::doSomething
可能如下所示:
doSomething([]()
{
// how do I get access to the sender???
});
正如您从我的评论中可以看出的那样,无法访问QObject::sender
以获取指向QObject
发出信号的指针。因为发出信号的类不在创建 lambda 的范围内,所以无法在 lambda 内引用它。
我有什么选择?
编辑:我尝试使用 Andy 的建议 ( std::bind
),但我最终得到了一个几乎无法理解的模板错误:
http://paste.ubuntu.com/1614425/
摘抄:
decltype 无法解析重载函数的地址
...它指向QObject::connect
呼叫。