为什么这不起作用?
类继承自 QObject
b 是班级孩子。
bar是Foo子。
void Class::method(Foo& b) {
Bar* bar = b.getBar();
QObject::connect(bar, &Bar::s1, [&]{
auto x = bar->x(); // this line throw an exception read access violation.
});
}
作为第一个猜测,我认为调用插槽时该栏不再存在。要纠正它,我需要按价值捕获。
我说对了吗?
使其工作的更改:
void Class::method(Foo& b) {
Bar* bar = b.getBar();
QObject::connect(bar, &Bar::s1, [bar]{
auto x = bar->x(); // this line throw no more exceptions and work as expected.
});
}