[過去ログ]
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1478440682/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
528: デフォルトの名無しさん [sage] 2017/03/30(木) 10:48:22.67 ID:JHpE2Dpf >>525 一般論として形でただ覚えるのではなくて意味を理解しよう 理解があやしいから設計の一貫性がなく混乱してるようにみえる ・Dataをポインタで所有するのはなぜ ・ゲッター/セッターを使ってアクセスするのはなぜ ・ゲッターで返す値にconstをつけるのはなぜ ・sizePlus10がData*を受けとるのはなぜ MyClassの設計方針にあわせるならsizePlus10をDataではなくMyClassを受けとるようにして void sizePlus10(MyClass & mc) { Data newdata = { mc.getData()->id, mc.getData()->size + 10 }; mc.setData(newdata); } あるいは別の関数を作って void MyClassSizePlus10(MyClass & mc) { Data newdata = *mc.getData(); sizePLus10(&newdata); mc.setData(newdata); } これが変だとか非効率だとか思うなら MyClassの設計が要求にあってないのでそっちを変更する http://mevius.5ch.net/test/read.cgi/tech/1478440682/528
529: デフォルトの名無しさん [sage] 2017/03/30(木) 20:11:34.52 ID:irpIFLVN >>528 おまえは質問の意図を理解しよう >>525 そのsetgetでいいんじゃない?ただそのgetは俺だったらreferにするな ついでにsetget両方使えるようにdata* operator->()みたいなの実装かな。というかむしろそっちでアクセスする方向にするな あとはattachdetach作っておいてm_dataを置換できるにようにしちゃうな その手のスマートポインタは至るとこで使われてるからこんなとこで聞かずにどっかのライブラリの参考にしたら? メンバのコピーはpragma pack1でstructしておいてmemcpy http://mevius.5ch.net/test/read.cgi/tech/1478440682/529
535: デフォルトの名無しさん [sage] 2017/03/31(金) 02:09:29.70 ID:DQgqVTGo >>526-529 ありがとうございます 今まではとりあえずget/setを書いてgetにはconstを付けとけば良いみたいな認識でしたが、 想定されるクラスの使われ方に合わせて適宜変更するべきでした MyClassのようなget/setの分け方をすると、 sizePlus10のような関数やsetで不便になってしまうので、 constを付けないget/set共用のものにしてそれを通してアクセスさせるのが適切でした ( getData()でアクセスする場合、Data * const getData() const { /**/ } みたいな ) とても参考になりました http://mevius.5ch.net/test/read.cgi/tech/1478440682/535
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.172s*