[過去ログ]
Boostを語れゴラァ part3 (1001レス)
Boostを語れゴラァ part3 http://echo.5ch.net/test/read.cgi/tech/1158991211/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
584: デフォルトの名無しさん [sage] 2007/01/11(木) 09:41:04 >>581 もうね、 > int i = 1 > while(i--){ の時点でC++理解してなさすぎ。 { shared_ptr<A> hogehoge(new A); hoge = hogehoge; cout << hoge.use_count() << endl; } これだけでスコープ限定できるの。 boostを理解しようなんて百年早い。 基礎からやり直しな。 http://echo.5ch.net/test/read.cgi/tech/1158991211/584
585: デフォルトの名無しさん [sage] 2007/01/11(木) 09:55:44 C++っていうかC http://echo.5ch.net/test/read.cgi/tech/1158991211/585
586: デフォルトの名無しさん [sage] 2007/01/11(木) 10:01:40 >>584 んなどうでもいいことよりも少しは本質的な話をしたらどう http://echo.5ch.net/test/read.cgi/tech/1158991211/586
587: デフォルトの名無しさん [sage] 2007/01/11(木) 10:03:37 do{ hogehoge(); }while(0); hogehoge()は実行されますか? http://echo.5ch.net/test/read.cgi/tech/1158991211/587
588: デフォルトの名無しさん [sage] 2007/01/11(木) 10:28:53 >>587 それは別のスレで質問したらいいと思う http://echo.5ch.net/test/read.cgi/tech/1158991211/588
589: デフォルトの名無しさん [sage] 2007/01/11(木) 10:45:07 >>583 reset すれば? http://echo.5ch.net/test/read.cgi/tech/1158991211/589
590: デフォルトの名無しさん [] 2007/01/11(木) 10:47:47 お前らと仲良くなりたくて、もっと weak_ptr について理解を 深めようと思ったが、頭が悪すぎて理解できなかった。 なんかやばそうだから循環参照が起きないように気をつけよう、 その程度の理解な俺が作っているプログラムを使わされている やつカワイソス。 http://echo.5ch.net/test/read.cgi/tech/1158991211/590
591: デフォルトの名無しさん [] 2007/01/11(木) 10:49:54 ちなみに俺の理解では weak_ptr は参照カウントを増減させないので たとえ weak_ptr で参照されていたとしても実体が delete されて いるかもしれん。だから weak_ptr の参照先が生きてるかどうか ちゃんとチェックしてから使おうね、ってことなんだが。 http://echo.5ch.net/test/read.cgi/tech/1158991211/591
592: デフォルトの名無しさん [] 2007/01/11(木) 10:51:18 生のポインタじゃなくて weak_ptr を使う理由は、 参照先のオブジェクトの生死を追跡することが出来るから。 えっと、ほかにうれしさある? http://echo.5ch.net/test/read.cgi/tech/1158991211/592
593: デフォルトの名無しさん [] 2007/01/11(木) 11:09:46 >>592 おれもよく分からんのだけど、読んだりしらべたりした感じだと 循環参照でカウントが不当に上がってしまわないように shared_ptrの相互参照は片方をweak_ptrにしないと駄目ってことも あるんじゃないだろうか。違ってたらまた指摘よろ http://echo.5ch.net/test/read.cgi/tech/1158991211/593
594: デフォルトの名無しさん [] 2007/01/11(木) 11:11:17 >>589 reset()か。ちょっと試してみる http://echo.5ch.net/test/read.cgi/tech/1158991211/594
595: デフォルトの名無しさん [] 2007/01/11(木) 11:24:52 >>589 reset()した後に、そのshared_ptrをどうやって再利用したらいいんだろう。 http://echo.5ch.net/test/read.cgi/tech/1158991211/595
596: デフォルトの名無しさん [sage] 2007/01/11(木) 11:57:10 shared_ptrみたいな簡単な部類すら理解できないのに boostを使おうなんて100年早い http://echo.5ch.net/test/read.cgi/tech/1158991211/596
597: デフォルトの名無しさん [sage] 2007/01/11(木) 12:08:07 >>596 それでも BGL は便利にがんがんつかわせてもらってます >< http://echo.5ch.net/test/read.cgi/tech/1158991211/597
598: デフォルトの名無しさん [sage] 2007/01/11(木) 16:02:41 >>595 shared_ptr p1( object1 ); p1.reset( object2 ); shared_ptr のインターフェイス定義くらい読んでおけよ。 http://echo.5ch.net/test/read.cgi/tech/1158991211/598
599: デフォルトの名無しさん [sage] 2007/01/11(木) 16:28:02 >>592 他に,対象のオブジェクトを参照している最中に (そのオブジェクトを指している shared_ptr が全て消えることで) 突然そのオブジェクトが死んでしまうような事態を回避することができます. (この問題はマルチスレッドプログラムで特に顕著だと思いますけれど, シングルスレッドプログラムでも論理的にはありえるケースです) void process( weak_ptr< Obj > wp ) { if( shared_ptr< Obj > p = wp.lock() ){ // このスコープ内では, (たとえば他の実行スレッドの動作によって) // p の指しているオブジェクトが削除されるようなことはない } else{ // wp が指しているオブジェクトが死んでいる場合. // ここでどうするかは何を実装するかによります. // wp の参照先が常に生存していることが不変条件ならば, // 571さんの書いているように論理エラーを通知する (例外を送出する) ことに // なるでしょうし,参照先のオブジェクトが死んでいることを検出して // 他のアクションを取るようなことも,場合によっては想定されます. } } http://echo.5ch.net/test/read.cgi/tech/1158991211/599
600: デフォルトの名無しさん [sage] 2007/01/11(木) 16:30:05 また,自身は shared_ptr を必要としないけれど,他の誰かに shared_ptr を渡すような要求がある場合に weak_ptr が必要になります. // 自身は B のオブジェクトへの (弱い) 参照を持っているだけで良いが, // B のオブジェクトへの shared_ptr を返すインタフェイスが必要なクラス class A{ public: shared_ptr< B > getB() const{ return boost::shared_ptr< B >( p_ ); } private: weak_ptr< B > p_; }; あと weak_ptr の使い方として典型的なのが,参照先のオブジェクトが 死んでいてもかまわないような場合です. proxy (特にキャッシュの実装) や observer などの実装で有用な使い方があるかと思います. http://echo.5ch.net/test/read.cgi/tech/1158991211/600
601: デフォルトの名無しさん [sage] 2007/01/11(木) 17:17:34 shared_ptr はソースはそんなに複雑ではないわりに、 enable_shared_from_this や、weak_ptr、shared_ptr<void>、カスタム削除子 への対応など 細かいところでさまざまな工夫が施されているから、一度ソースに目を通しておくと勉強になる。 http://echo.5ch.net/test/read.cgi/tech/1158991211/601
602: デフォルトの名無しさん [sage] 2007/01/11(木) 19:49:50 削除子は勉強になったなぁ http://echo.5ch.net/test/read.cgi/tech/1158991211/602
603: デフォルトの名無しさん [sage] 2007/01/11(木) 20:18:15 今回の人の場合、ソース読むよりスマートポインタのことが書かれた 適当な本読んだほうがよくねえか? いやおまいらが親切なのはよくわかったけどさ http://echo.5ch.net/test/read.cgi/tech/1158991211/603
604: デフォルトの名無しさん [sage] 2007/01/11(木) 20:31:23 カウンタを共有するのがポイント http://echo.5ch.net/test/read.cgi/tech/1158991211/604
605: デフォルトの名無しさん [sage] 2007/01/11(木) 20:56:40 >>603 >適当な本読んだほうがよくねえか? そういう本ある?自分は見たことないんだけれど http://echo.5ch.net/test/read.cgi/tech/1158991211/605
606: デフォルトの名無しさん [sage] 2007/01/11(木) 21:08:05 超定番ながらModern C++ Designじゃないかね? http://echo.5ch.net/test/read.cgi/tech/1158991211/606
607: デフォルトの名無しさん [sage] 2007/01/11(木) 22:49:52 multi_array<double,3> じゃなくて int ndim=3; multi_array<double> a(ndim) みたいな多次元配列の宣言の仕方できないのでしょうか? ndimをプログラム中で変えたいのです http://echo.5ch.net/test/read.cgi/tech/1158991211/607
608: デフォルトの名無しさん [sage] 2007/01/12(金) 09:59:32 多次元配列の大きさを動的に決める方法なかったみたいなので std::map< std::vector<double>, double> m で代用しました。速度で問題でそうな雰囲気もするけど、しかたないかな・・・ http://echo.5ch.net/test/read.cgi/tech/1158991211/608
609: デフォルトの名無しさん [sage] 2007/01/12(金) 11:07:32 >>608 ふつうstd::vector<<std::vector<double> >じゃない? http://echo.5ch.net/test/read.cgi/tech/1158991211/609
610: デフォルトの名無しさん [sage] 2007/01/12(金) 11:09:46 >>608 スレ違いになるが、一次元配列を(動的に)確保して、擬似多次元アクセス関数を作った方が善くないか? http://echo.5ch.net/test/read.cgi/tech/1158991211/610
611: デフォルトの名無しさん [sage] 2007/01/12(金) 11:32:19 >>606 boost::shared_ptr を理解する上で Modern C++ Design はどうなんですかね? あれはスマートポインタについては,削除子による不完全型への対応とか クロス DLL 問題などの突っ込んだ議論は載っていなかったように思いますし, それに boost::shared_ptr の設計思想は, MC++D の一つの柱である 「ポリシーに基づく設計」のそれとは,アンチテーゼの関係にすらあるように思いますし. http://echo.5ch.net/test/read.cgi/tech/1158991211/611
612: デフォルトの名無しさん [sage] 2007/01/12(金) 15:50:59 >>608 …代用できるの? http://echo.5ch.net/test/read.cgi/tech/1158991211/612
613: デフォルトの名無しさん [sage] 2007/01/12(金) 21:54:17 どうみてもコンパイルエラーです。本当にありがとうございました。 http://echo.5ch.net/test/read.cgi/tech/1158991211/613
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 388 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.013s