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オブジェクトをクリックすると、メモリエラーのために最後の3行目が原因でクラッシュします。 buttonBookBoatとdialogBookBoatがオブジェクトの配列ではなく単一のオブジェクトである場合、このコードは完全に機能します。 show()はダイアログオブジェクトを表示するメソッドです。配列のラムダ関数を使用したメモリエラー
このエラーは私を夢中にしてくれていて、私の人生はこのコード(実際はありません)に沿っています。
ボタンを押したときに、buttonBookBoatとdialogBookBoatの両方が確実に存在しますか?彼らが両方ともグローバルであれば、それはありますが、あなたはどの範囲を持っているのかは言いません。 –
Jerry Jeremiahはい、どちらも存在します。私はアレイとは対照的に、単一のオブジェクトで全く同じコードを試してみました。 – Jake