【发布时间】:2021-10-20 04:05:48
【问题描述】:
这个问题被标记为与 qt 的 connect 方法有关的另一个问题的重复。但由于我的代码确实 not 调用 connect 我的问题不能重复。也许这两个问题的答案在某种程度上是相关的,但是这两个问题并不相似。
我正在使用 Mac 上的 Qt Creator 进行 C++ 编程(clang 编译器)。
如上图所示,如下代码行:
QTimer::singleShot(100.0, [this](){ this->timeout();});
产生警告:
将上下文对象作为第二个 singleShot 参数传递 [clazy-connect-3arg-lambda]
这个警告是什么意思以及如何消除它?
【问题讨论】:
-
警告旨在让您考虑对象生命周期,这在(并发)编程中非常重要。考虑“this”指针在 100 毫秒后不再有效的情况。 Qt 计时器将回调一个不再存在的对象。这看起来像一个误报(我假设这个对象存在很长时间)所以你必须查看 Qt 手册以了解如何抑制这个警告
-
@paxdiablo,我不知道如何解释 github 评论。警告是“误报”吗?或者我应该使用一个重载来接受一个“上下文对象”的singleShot?我不确定那是什么意思。