[過去ログ] C++相談室 part165 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
190: はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-vdg+) [sage] 2024/01/28(日) 20:53:25.29 ID:hRRbWEE/0(1/3) AAS
>>189
189(4): ◆QZaw55cn4c (ワッチョイ 3583-LgJ8) [] 2024/01/28(日) 20:27:29.75 ID:0TnCAHFI0(1) AAS
思い立って結城さんのデザパタ(古いjava で記述)を総称型(テンプレート)もちゃんと使ってC++ に書き直しているけれども、
new/delete からptr::shared_ptr に書きなおすと、もう構造がわかりにくくなってしまってどうしようもない
デザパタ=抽象クラスプログラミングは C++ ではオワコンなの?
Visitor パターン
new/delete: 外部リンク:ideone.com スッキリ書けてきもちいい
std::shared_ptr: 外部リンク:ideone.com 恐ろしい宣言の連発

>std::shared_ptr<Iterator<std::shared_ptr<Entry>>> iterator() { return std::make_shared<VectorIterator<std::shared_ptr<Entry>>>(v); }

なんかもう書いてても意味不明
CONSTRUCTOR(CONSTRUCTOR *p) とかコピコン以外にもみたことのないコンストラクタが要求されるし
スマートポインタを使わないバージョンも C++ 的にはすっきりしてない。
動的多態の必要が必要ないのに持つべきメンバ関数を強制するためだけに抽象クラスを使っていて不恰好に見える。
コンセプトの導入がだいぶん後回しになった C++ の問題でもあるんだが……。
設計理念が妥当かどうかはともかくとして、元が Java なら直訳めいた C++ への置き換えがすっきりと書けるはずがない。
191: はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-vdg+) [sage] 2024/01/28(日) 21:08:52.58 ID:hRRbWEE/0(2/3) AAS
ざっと見た感じだと抽象クラスとして必要なのは Entry だけかな。
ジェネリックラムダが visitor パターンで使いやすいのでそういうのが使いやすいように配慮するといいかも。
std::visit が C++ での visitor パターンのお手本だよ。
194
(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ 2a3e-MxBP) [sage] 2024/01/28(日) 23:52:27.85 ID:hRRbWEE/0(3/3) AAS
なんかもうポインタをいじるのが面倒になったので値としてやりとりしていいやという気持ちと
標準ライブラリを積極的に活用することにしたらこうなった。
外部リンク:wandbox.org
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.726s*