const int bookBoatNum = 10;
Wt::WPushButton *buttonBookBoat[bookBoatNum];
Wt::WDialog *dialogBookBoat[bookBoatNum];
for (int i = 1; i < bookBoatNum; i++){
dialogBookBoat[i] = new Wt::WDialog("Book Boat");
buttonBookBoat[i] = new Wt::WPushButton();
buttonBookBoat[i]->clicked().connect(std::bind([&dialogBookBoat,i]() {
dialogBookBoat[i]->show();
}));
}
程序编译并运行。当我单击一个WPushButton对象时,由于内存错误,它因第三行而崩溃。如果buttonBookBoat和dialogBookBoat是单个对象而不是对象数组,则此代码可以正常工作。 show()是一个显示对话框对象的方法。
任何帮助都表示赞赏,这个错误一直让我发疯,我的生活与这段代码一致(不是真的)。
答案 0 :(得分:0)
const int bookBoatNum = 10;
Wt::WPushButton *buttonBookBoat[bookBoatNum];
Wt::WDialog *dialogBookBoat[bookBoatNum];
for (int i = 1; i < bookBoatNum; i++){
dialogBookBoat[i] = new Wt::WDialog("Book Boat");
Wt::WDialog * tempDialog=new Wt::WPushButton();
buttonBookBoat[i] = tempDialog;
buttonBookBoat[i]->clicked().connect(std::bind([tempDialog]() {
tempDialog->show();
}));
}
我认为dialogBookBoat是一个数组,因此在函数调用后它将不存在。