誤解しないでください。Boostbind()
は素晴らしいです。
しかし、私はそれを使ってコードを書いたり読んだりするのは嫌いであり、同僚がそれを悪用したり使用したりすることをあきらめました。
私は次のようなコードになります:
btn.clicked.connect(bind(&BetBar::placeBet, this, bet_id));
animator.eachFrame.connect(bind(&Widget::move, buttons[bet_id]));
これは論理的ではありますが、私がいいコードと呼ぶものとはかけ離れています。
実例を示すために...C++ 1xでは、次のようになります。
btn.clicked.connect([&](int bet_id){ placeBet(bet_id); })
animator.eachFrame.connect([&](Point newPos) { buttons[bet_id].move(newPos) })
そして、優れたDSLは次のようになります。
on(btn.clicked) placeBet(bet_id);
on(animator.eachFrame) buttons[bet_id].move(eachFrame::newPos);
C ++でのバインディングにどのように対処しますか?あなたはただあなたにどんな後押しを与えるかで生きていますか?