【发布时间】:2016-05-12 14:12:25
【问题描述】:
我有一个指向我传递给 lambda 函数的对象的指针。由于 lambda 函数在初始方法调用后 1 秒被调用,因此对象有时不再有效,从而导致分段错误。
如何在使用之前验证该项目在 lambda 函数中仍然有效?
这是我使用 lambda 函数的方法的样子:
void myTab::myMethod(QStandardItem *item)
{
QColor blue(0, 0, 128, 20);
QBrush brush(blue);
item->setBackground(brush);
//Restore background after 1000ms
QTimer::singleShot(1000, [item, this]() mutable {
item->setBackground(Qt::transparent); //<-need some advice here
});
}
【问题讨论】:
-
mutable的意义何在?为什么会捕获this? -
@Alex -- 不要认为这是正确的 dup -- 问题不是空的,而是指向空闲内存
-
他的问题不是如何检查指针是否有效,即它是否不是空指针?
-
Nvm,我看错了问题。
标签: c++ lambda segmentation-fault