トップページ > プログラム > 2016年03月15日 > 7F6lH4i+

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

2 位/184 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000001021116



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C++相談室 part123 [無断転載禁止]©2ch.net

書き込みレス一覧

C++相談室 part123 [無断転載禁止]©2ch.net
385 :デフォルトの名無しさん[]:2016/03/15(火) 18:46:33.79 ID:7F6lH4i+
すみません、visitorパターンを使うとacceptを持つインターフェースクラス(ライブラリコード)が、
具象クラスであるvisitor(ユーザーコード)に依存してしまうという問題を解決したかったのですが、いまいち伝わらなかったみたいです。

>>378
型タグによるダウンキャストは、メンテの観点から採用できません...

>>382
自分がなにを抽象化したいのか再考するきっかけになりました。
ありがとうございました。

結局visitorを内部のコンテナ型に依存するインターフェースクラスとすることで解決しました。
実際にはIVectorContainerとかIListContainerのような形にしました。
正確にはvalue_typeは決まってたのでテンプレートテンプレートパラメータを使いました。
C++相談室 part123 [無断転載禁止]©2ch.net
387 :デフォルトの名無しさん[sage]:2016/03/15(火) 20:46:48.46 ID:7F6lH4i+
>>386
ダウンキャストだとコンテナ型が増えるたびにif文を追加しなくてはならず、
しかも追加し忘れてもコンパイル時にエラーが出ないので…
C++相談室 part123 [無断転載禁止]©2ch.net
389 :デフォルトの名無しさん[sage]:2016/03/15(火) 20:54:05.87 ID:7F6lH4i+
>>388
いや、それはaccept側のオーバーライドで解決します
これがvisitorパターンの一般的な実装かと思いますが、どこがわかりませんか?
C++相談室 part123 [無断転載禁止]©2ch.net
391 :デフォルトの名無しさん[sage]:2016/03/15(火) 21:13:54.39 ID:7F6lH4i+
>>390
家に帰ったら実装書きます
C++相談室 part123 [無断転載禁止]©2ch.net
392 :デフォルトの名無しさん[sage]:2016/03/15(火) 22:59:29.47 ID:7F6lH4i+
>>390
こういうことです
https://ideone.com/JpA22R

これダウンキャストで実装すると、acceptを一つにまとめてif文で一つずつキャストを試すわけですよね?
その場合ConcreteXxxContainerがひとつ増えるとacceptを修正し忘れてもコンパイルが通ってしまって困ります
C++相談室 part123 [無断転載禁止]©2ch.net
394 :デフォルトの名無しさん[sage]:2016/03/15(火) 23:01:00.99 ID:7F6lH4i+
>>393
という風にしました


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