大人になりたくない

プログラミング系。最近は主に vvvv 。

C++ でデリゲート実装時には boost::signals2 が便利

RomanceEngine に GUI を実装するのに、C++ で boost::function でも使ってデリゲータの仕組み作らないとなーと思っていたら、boost::signals2 というものを見つけた。

boost::signals2::signal<void(const Point&)> clicked;
button.clicked.connect(boost::bind(&MainView::on_clicked, &mainView, _1));
clicked(Point(10, 10));

で、C# のデリゲートの += の役割。

boost::signals2::connection con = button.clicked.connect(boost::bind(&SubView::on_clicked, &subView, _1));
con.disconnect();

で、C# のデリゲートの -= の役割。

戻り値についてもいじれる。

参考:
Boost 逆引きリファレンス>シグナル/スロット
https://sites.google.com/site/boostjp/tips/signals