Boost.Signals2について 秋津 早苗 僕は誰? HN : 秋津 早苗 学生 筑波大学のサークルAmusement Creatorsに所属 好きな言語はC++ 苦手な言語はC++ 好きなゲームジャンルはSTG 苦手なゲームジャンルはSTG 発表の対象 プログラマさん(絵描きさんや音楽屋さんは聞いてもつまらないと思う) C++使っている人 Boostを使っている人 or 使いたいと思っている人 怖くない人 基本的なゲームの仕組み Scene::update() { 地形をupdate 自機をupdate 敵をupdate etc… } updateが呼ばれたら処理する関数の リスト作りたくない? updateが呼ばれたら処理する関数の リスト作りたくない? → Boost.Signals2を使おう! Boostとは?? C++のオープンソースライブラリ群 ヘッダファイルのみのものが多い 標準ライブラリはboostを基にしているもの がある コンパイル時間がboooooooost!! Boost.Signals2の使い方 boost::signals2::signal<関数の型> sig; として sig.connect(追加したい関数); とするだけ!! melpon.org/wandbox/permlink/YxAr5Ectenz Nr3h5 何を格納できるの? 関数ポインタ 関数オブジェクト もちろんラムダ式も つまり関数っぽいものなら大抵格納できる!! melpon.org/wandbox/permlink/mcITM0e34 Xt098vh メンバ関数を格納したい? std::bindはあなたの味方です! std::bind(&Class::Method,object) でおk! melpon.org/wandbox/permlink/T6FmFKqA2 K5CjE9U 呼び出す順番を変えたい! 第一引数に整数を渡すとその値が小さい順に読 んでくれる! melpon.org/wandbox/permlink/bWDrUKNY2 WSBfERm リストから除外したい時は? connectした時の返値を使おう! 返値はboost::signals2::connect型 boost::signals2::connect::disconnetを使う! melpon.org/wandbox/permlink/v3VaffnWDzTH euso ある重複して格納された関数をすべて リストから除外したい時 boost::signals2::disconnectを使う! melpon.org/wandbox/permlink/OcjdUX8fBd QdAR4F deleteされたオブジェクトは除外した い!! boost::signals2::signal::slot_type().track() ってすればいいよ!! (ただしboost::shared_ptrにしか使えない) melpon.org/wandbox/permlink/m12qhvIqrH iYZIoY signal呼んだ返値はどうなるの? 一番最後に呼ばれたもののoptionalになる! melpon.org/wandbox/permlink/s5ajAo8h7rj YTDPM signal呼んでどんな値を返すのか自分 で定義したい!! Signalの宣言時にテンプレート引数で指定でき る! melpon.org/wandbox/permlink/2e4jO88ZyLI nWvzH signal呼んでどんな値を返すのか自分 で定義したい!! Signalの宣言時にテンプレート引数で指定でき る! melpon.org/wandbox/permlink/2e4jO88ZyLI nWvzH みんなBoost使おう!! オマケ NugetにBoostある!! ビルドが要らないものしか使わないなら導入は とても簡単!!! みんなBoost使おう!! 何か質問?
© Copyright 2024 ExpyDoc