トップページ > プログラム > 2016年01月25日 > 2nNO2C2F

書き込み順位&時間帯一覧

2 位/146 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000020001022010019



使用した名前一覧書き込んだスレッド一覧
5
C++相談室 part122 [無断転載禁止]©2ch.net

書き込みレス一覧

C++相談室 part122 [無断転載禁止]©2ch.net
23 :5[sage]:2016/01/25(月) 11:17:27.48 ID:2nNO2C2F
>>18
問題は全くないです。
ただ、スマポを正しく使えてる自信がなかった中、前スレ>>956等を見てやばいと焦った次第です。

>>14
生ポインタ使うのは正直抵抗があるので今回は見送ります。
unique_ptrは仰る通り使うべきでした。
C++相談室 part122 [無断転載禁止]©2ch.net
25 :5[sage]:2016/01/25(月) 11:52:15.00 ID:2nNO2C2F
糞コードをこんな感じに修正しました。どなたか採点していただけますか?
http://ideone.com/KYia26
修正点は以下です。
・weak_ptrをshared_ptrや参照に置き換えた
・一番親のAはBのリストをshared_ptrからunique_ptrに置き換えた

書いてて思ったのですが、今回のような複数のオブジェクトから参照されるオブジェクトをソートする場合は
スマポあるいは生ポを使う以外方法がないんではないでしょうか?
C++相談室 part122 [無断転載禁止]©2ch.net
31 :5[sage]:2016/01/25(月) 15:06:09.85 ID:2nNO2C2F
>>29
すみません、一点大事なことをいい忘れてました。
BのlistC1はC2のそれとは同じでなく、後者は前者の部分集合で、C2オブジェクト間でlistC1の関連はなく、ソートも必要ないのでした。

いただいたアドバイスを元に改良しました。
http://ideone.com/nog6AP
(いくつかC++14の機能があったので、自分のC++11環境でビルドが通らなくて焦りました)

ところで、以下が分かりませんでした。よければもう少し教えていただけますか?

・計算式に複数の副作用を含むべきではない。評価順序によって値が変わる可能性がある。
・listC2の要素数が1つでない場合にlistC1の更新が誤ったものになっている。
C++相談室 part122 [無断転載禁止]©2ch.net
36 :5[sage]:2016/01/25(月) 17:24:17.41 ID:2nNO2C2F
>>33
>ただの関数呼び出しの場合には左から順に評価されるとは限らない
全く知りませんでした。超大事なことですね。
ありがとうございます。

>n回呼ばれうる事を考えるとfor文で全体を括った方が良いんじゃない?
仰る通り、実際の用途ではそうしてます。
C++相談室 part122 [無断転載禁止]©2ch.net
37 :5[sage]:2016/01/25(月) 17:37:21.34 ID:2nNO2C2F
>>34
いえ、クラスの親子関係、およびメンバにコンテナや親への参照(生ポ、スマポ、参照のどれにするかは別として)を持つこと自体は間違いない設計です。

>>35
タイプオブジェクトパターンとは何でしょうか?
デザインパターンにはないようですが、Factoryパターンの一種でしょうか?
C++相談室 part122 [無断転載禁止]©2ch.net
40 :5[sage]:2016/01/25(月) 18:42:58.12 ID:2nNO2C2F
>>38
>れっきとしたデザパタ
GoFのデザパタではないんですね。勉強します。

>とりあえずC2、C3が必ずC1を含むなら、
C3が含むのはC1ではなくC2です。IdeoneではC3は省いていますが。

>もしかしてC3やC2とC1の持つA/Bって別なん?
いえ、同じです。

実際のやりたいコードは2次元の幾何です。もっと早く言うべきだったかもしれません、すいません。
C1が点、C2が点を繋いだ線、C3が線で囲まれる多角形、BやAはそれらの上位のクラス(geometryみたいな名前)です。
C++相談室 part122 [無断転載禁止]©2ch.net
41 :5[sage]:2016/01/25(月) 18:57:41.09 ID:2nNO2C2F
>>39
インスタンスを所持するテンプレートクラスを作るのですね。勉強になります。
C++相談室 part122 [無断転載禁止]©2ch.net
43 :5[sage]:2016/01/25(月) 20:00:38.31 ID:2nNO2C2F
>>42
>とりあえずC1から取れるしC2/C3にA/Bのポインタいらないんじゃね
それは仰る通りです。
ただ、c2->listC1[0]->refB とC1を辿るのが面倒だったのでC2に持たせてしまいました。

>実現したいことがわからないが
うーん、そんな変でしょうか?
実は幾何の入出力ファイル(他者製)もこのクラスの親子関係そのままのフォーマットになってて、
それをコードでも踏襲したという経緯です。
C++相談室 part122 [無断転載禁止]©2ch.net
57 :5[sage]:2016/01/25(月) 23:27:49.38 ID:2nNO2C2F
>>31により当初の目的だったweak_ptrの排除ができ、またスマポの使用が今回の場合
不適切というわけではなさそう(というか自分的にはベストな解)ことが分かり
満足したので、質問を締めさせていただきます。

回答くれた方どうもありがとうございました。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。