C++相談室 part166 (574レス)
上下前次1-新
抽出解除 レス栞
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
226(2): デフォルトの名無しさん (ワッチョイ eea1-bAVr) [sage] 2025/06/04(水) 23:27:49.48 ID:GWnctGWc0(4/4) AAS
とりま↓こうしたら逝けた……
https://ideone.com/sug3S4
んまーfooのインスタンスの寿命を考えたらstd::function<T>はfooをコピーする実装になるという予想の下に、
fooを構築したときのthisをメンバm_objIDに記憶させて、fooの等値演算はm_objIDの比較で行うようにしたらイゴイタ……
5chは漏れの日記帳……
227(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 29f7-FMYs) [sage] 2025/06/05(木) 03:33:47.67 ID:lIQfbdfd0(1) AAS
>>226
この場合に呼び出されるコンストラクタは
template<class F> function(F f);
なのでコピーされることはこのシグネチャから自明。
https://timsong-cpp.github.io/cppwp/n3337/func.wrap.func.con
std::function は (同じ形式で呼び出しが可能なら) 違う型のオブジェクトを統一的に扱うことが目的なので入れる型を限定してしまうような構造は std::function を使う甲斐がない。
どういう状況で比較しようとしてるのかわらんけど、そういうのが必要になってるなら設計が根本的に失敗してる可能性を疑う。
231: はちみつ餃子◆8X2XSCHEME (ワッチョイ 8d32-FMYs) [sage] 2025/06/05(木) 12:10:53.33 ID:BNqgyRrD0(1/3) AAS
>>229
target で指定した型と実際に入っている動的な型が合致しない場合はヌルポインタが返される仕様になっていてそれ自体は問題ない。
実際のコードがどうなってるか示されていないけれど、 >>226 の延長線のようなコードだとしたらヌルポインタ返ってきたときヌルポインタに単項 * を適用していることになるし、更にはそのメンバ関数である operator== を呼び出したりデータメンバ m_objID にアクセスしたりしてるのが全部ダメ。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.038s