QTimer与Lambada使用问题

版权声明:如果对您有帮助,跪求点赞!本文为博主原创作品,转载请声明出处! https://blog.csdn.net/u011086209/article/details/91446355

QTimer与Lambada在类的成员函数中执行下面这一行代码会有隐藏问题:

QTimer::singleShot(1000, [&](){ dosomething();});

这里有一个隐患,dosomething();调用者为this,如果在1000ms之内碰巧this被销毁了,那么1000ms之后,这个Lambada依然会被执行,此时有可能导致crash或其他为知结果,正确的写法为:

QTimer::singleShot(1000, this, [&](){ dosomething();});

这样当this被销毁时,该Lambada表达式将不会被执行,也就不会crash了。

猜你喜欢

转载自blog.csdn.net/u011086209/article/details/91446355