lambada表达式作为槽函数可能出错的地方是,如果不是通过参数绑定的变量,而是通过[&]来捕获的变量,当信号调用时绑定可能不是connect时候的那个变量了,它会被修改!!但是如果是[=]或者(args)形式传入的变量就不会有问题
for(size_t i = 0;i<=1;++i)
{
Newspaper* that = nullptr;
if(i == 0)
that = &newspaper1;
else
that = &newspaper2;
QObject::connect(that, &Newspaper::newPaper,that,[=/*&*/](const QString name){qDebug()<<i;//name;});
//newspaper.send();//发送信号
}
newspaper1.newPaper("FFFFFFFFFFFFFFF");
newspaper2.newPaper("ffffffffffffffffffffff");