[過去ログ]
C++相談室 part165 (1002レス)
C++相談室 part165 http://mevius.5ch.net/test/read.cgi/tech/1698705458/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
189: ◆QZaw55cn4c (ワッチョイ 3583-LgJ8) [] 2024/01/28(日) 20:27:29.75 ID:0TnCAHFI0 思い立って結城さんのデザパタ(古いjava で記述)を総称型(テンプレート)もちゃんと使ってC++ に書き直しているけれども、 new/delete からptr::shared_ptr に書きなおすと、もう構造がわかりにくくなってしまってどうしようもない デザパタ=抽象クラスプログラミングは C++ ではオワコンなの? Visitor パターン new/delete: https://ideone.com/6d43LO スッキリ書けてきもちいい std::shared_ptr: https://ideone.com/oYzkxh 恐ろしい宣言の連発 >std::shared_ptr<Iterator<std::shared_ptr<Entry>>> iterator() { return std::make_shared<VectorIterator<std::shared_ptr<Entry>>>(v); } なんかもう書いてても意味不明 CONSTRUCTOR(CONSTRUCTOR *p) とかコピコン以外にもみたことのないコンストラクタが要求されるし http://mevius.5ch.net/test/read.cgi/tech/1698705458/189
190: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 2a3e-vdg+) [sage] 2024/01/28(日) 20:53:25.29 ID:hRRbWEE/0 >>189 スマートポインタを使わないバージョンも C++ 的にはすっきりしてない。 動的多態の必要が必要ないのに持つべきメンバ関数を強制するためだけに抽象クラスを使っていて不恰好に見える。 コンセプトの導入がだいぶん後回しになった C++ の問題でもあるんだが……。 設計理念が妥当かどうかはともかくとして、元が Java なら直訳めいた C++ への置き換えがすっきりと書けるはずがない。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/190
192: デフォルトの名無しさん (ワッチョイ b501-PlwZ) [sage] 2024/01/28(日) 22:46:18.85 ID:VLKT1lFt0 >>189 usingなりtypedefでエイリアス作れば? using Entry_Ptr = std::shared_ptr<Entry>; http://mevius.5ch.net/test/read.cgi/tech/1698705458/192
198: デフォルトの名無しさん (ワッチョイ bda8-xxv9) [sage] 2024/01/29(月) 21:21:12.23 ID:eAAuxXw40 >>189 c++ https://ideone.com/p3li2Y ・https://ideone.com/oYzkxh を元に若干の整理を行った ・他の人と同様shared_ptrを削除 値で持てるところは単に値で持つほうがC++っぽいと思う ただ「Entry を値で持つのはいやだなあ」とのことなので部分的に残してる Javaの参照型変数をshared_ptrに置き換えようとして困るのは size_t File::accept(std::shared_ptr<Visitor> v) { return v->visit(std::make_shared<File>(this)); } ここがJavaだと単にvisit(this)で済むからスッキリするんだけど しかもこれmake_shared(this)だと多重開放するよね?? >>189 c++ https://ideone.com/2uUpwH ・https://ideone.com/p3li2Y を元に若干の整理を行った ・make_shared<File>(this)の多重開放?を修正 std::enable_shared_from_thisを使ってJavaの参照型変数っぽい使用感を得た。 ・struct this_is_private {}; これは単にコンストラクタを実質的にprivateにするためだけに使ってる https://en.cppreference.com/w/cpp/memory/enable_shared_from_this https://stackoverflow.com/questions/8147027/how-do-i-call-stdmake-shared-on-a-class-with-only-protected-or-private-const このへん参照されたし http://mevius.5ch.net/test/read.cgi/tech/1698705458/198
204: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7932-MxBP) [sage] 2024/02/03(土) 14:49:57.28 ID:Sz70frqK0 >>203 内部的に値で持つのでもポインタで持つのでもいいけど 「簡単に値として取り出せる」のはあまりよろしくないと思う。 これ (>>189) がおそらくファイルシステムを表現しようとするもの だという前提を考えたらオブジェクトの構造も ファイルシステムのモデルを抽象するものであるべきだと思うから。 ファイルはそれがある場所にも意味があるからファイルを象徴するオブジェクトが 場所から離れてやりとりされるのは違和感がある。 まあファイルシステムのモデルをどう捉えるかは私の感想でしかないから 何が妥当とは強くは主張しないけど、 いずれにしても実装上の都合じゃなくて使う側の感覚でどうなってて欲しいかという視点が要ると思う。 http://mevius.5ch.net/test/read.cgi/tech/1698705458/204
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.753s*