23/06/14(水)19:53:08 相互参... のスレッド詳細
削除依頼やバグ報告は メールフォーム にお願いします。個人情報、名誉毀損、侵害等については積極的に削除しますので、 メールフォーム より該当URLをご連絡いただけると助かります。
画像ファイル名:1686739988155.jpg 23/06/14(水)19:53:08 No.1067502483
相互参照するようなクラスの宣言のベストプラクティスが分からん
1 23/06/14(水)19:53:25 No.1067502630
全て壊せ
2 23/06/14(水)19:56:49 No.1067504243
そのベストプラクティスは本当にベストなの?
3 23/06/14(水)19:57:53 No.1067504713
設計が悪いのでは
4 23/06/14(水)20:00:55 No.1067506067
バッドプラクティスにベストプラクティスがあるわけねーぜ!
5 23/06/14(水)20:13:38 No.1067512541
上に管理クラスを作って、それが2つを管理するようにして 2つのクラス間の通信は管理クラスのメソッド呼んでやるようにすればよくない?
6 23/06/14(水)20:18:51 No.1067515389
片方は前方宣言しないとコンパイルが通らないはず それ以上はなんもわからん
7 23/06/14(水)20:23:28 No.1067517528
完全に対等な関係ってほぼ無いから 主体となる方がもう一方を取り扱うようにすればいいんじゃね?
8 23/06/14(水)20:26:08 No.1067518812
片方を抽象クラスを継承させたクラスにして メインのクラスは抽象クラスを使う
9 23/06/14(水)20:26:39 No.1067519076
クラスAとBがあってAのメンバ関数でvectorを引数にとってBのメンバ関数でA内部で定義されたenum型を引数に取るって形で相互参照になってコンパイル通ってなかった 他のクラスで使うからenumをAの外に定義すればコンパイル通るんだけどAの外部でそのenum使うのここだけだからなんか違う気もするなって…
10 23/06/14(水)20:29:18 No.1067520278
Bから使ってるなら外部から使ってるって言っていいと思うよ そんなにAの外に出したく無いならBをAの中に入れるとか
11 23/06/14(水)20:36:30 No.1067523266
>そんなにAの外に出したく無いならBをAの中に入れるとか あーなんかコレが正解な気がしてきた ありがとう
12 23/06/14(水)20:37:24 No.1067523663
クリーンアーキテクチャ
13 23/06/14(水)20:42:58 No.1067526060
たぶんこれ典型的な設計ミスだと思う 依存性の逆転とかでググってみて
14 23/06/14(水)20:45:12 No.1067526981
>たぶんこれ典型的な設計ミスだと思う >依存性の逆転とかでググってみて pimplにしろってこと?
15 23/06/14(水)20:45:35 No.1067527133
俺だったらAB2つのインターフェースクラスとenumの定義を先にやってから 実体を実装するかなあ でもABの影響が循環してるのがそもそもアレなんで Bのメンバ関数がAの何がしを触るよりBのメンバ関数をAが呼び出す設計がいい そしてBはAがなくても成立するクラスとして設計すべき
16 23/06/14(水)20:46:20 No.1067527499
>クラスAとBがあってAのメンバ関数でvectorを引数にとってBのメンバ関数でA内部で定義されたenum型を引数に取る この時点でもうだいぶ破綻してねえかな AとBと共通インターフェースのCがいるんじゃねえのか
17 23/06/14(水)20:46:41 No.1067527652
>pimplにしろってこと? 全然関係ねえ…
18 23/06/14(水)20:48:18 No.1067528334
とりあえずenumは名前空間にでも放り込んで追い出した方がいいんでない
19 23/06/14(水)20:52:41 No.1067530163
>Bのメンバ関数がAの何がしを触るよりBのメンバ関数をAが呼び出す設計がいい まさにこれ 依存性の逆転