C++相談室 part166 (569レス)
C++相談室 part166 http://mevius.5ch.net/test/read.cgi/tech/1745631298/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
229: デフォルトの名無しさん (ワッチョイ eea1-bAVr) [sage] 2025/06/05(木) 08:28:31.27 ID:ExyrcTL10 コールバック関数の自由な登録というのをstd::function<T>として登録することを考えて居たけんども 素のstd::function<T>ではチェックが自由にできないということがわかりた…… MSVCとかで関数を入れたstd::function<double (int, long)>に対し関数オブジェクトfooとしてtarget<foo>()するか 反対のことをしたらcatchできない例外が発生すた、(多分構造化例外か何かでSTLの仕様的にはおそらく未定義動作 故に素のstd::function<T>を使おうとする限り、入れるブツをdynamic_cast可能な関数オブジェクトに限定するとかしないと 手の打ちようが無いorz 現実解はstd::function<T>をwrapした「コールバック関数クラス」の創設…… http://mevius.5ch.net/test/read.cgi/tech/1745631298/229
231: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8d32-FMYs) [sage] 2025/06/05(木) 12:10:53.33 ID:BNqgyRrD0 >>229 target で指定した型と実際に入っている動的な型が合致しない場合はヌルポインタが返される仕様になっていてそれ自体は問題ない。 実際のコードがどうなってるか示されていないけれど、 >>226 の延長線のようなコードだとしたらヌルポインタ返ってきたときヌルポインタに単項 * を適用していることになるし、更にはそのメンバ関数である operator== を呼び出したりデータメンバ m_objID にアクセスしたりしてるのが全部ダメ。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/231
232: デフォルトの名無しさん (ワッチョイ d142-hbVI) [sage] 2025/06/05(木) 13:25:12.77 ID:EjJmkkft0 >>229 あんまり深く理解してないけど コールバックの責任範囲(待機の解除とか)が違うのを明確に管理したい ->責任範囲の違いごとに基底クラスを用意して、コールバックは派生クラスで実装させる。 みたいなガチガチの管理がいいんじゃないんかね。 コールバック実装側にも管理する義務を押し付けられるし、基本的なフレームワーク(待機の解除手順とか)は基底クラス側で実装できる。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/232
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s