X



C++で条件に応じて動的にクラスのインスタンス化する時にさ
■ このスレッドは過去ログ倉庫に格納されています
0001以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 17:45:24.706ID:rYxGYgjR0
IF分でいちいち書いてやったらダメ?
0002以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 17:45:49.800ID:qGtJXrj50
いいよ~
0004以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 17:47:24.184ID:whTXElN1M
動的とは
0008以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 17:55:00.057ID:rYxGYgjR0
複数画面遷移するシステムでメインのコントローラーから現在表示している画面のインスタンスだけを有効にしたい
インスタンスを格納するポインタを1つ用意して、そこに画面のインスタンスのポインタを格納したいんだけど、下みたいなアホ処理でもいいの?


ヘッダー

Test * instance;

ソース

delete instance;
instance == nullptr;

if(id == "Test1") {
instance = new Test1();
} else (id == "Test2") {
instance = new Test2();
}
0009以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 17:55:57.870ID:rCSu1vpN0
ぬるぽ
0010以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 17:56:29.934ID:rYxGYgjR0
各画面はTestクラスを継承しており、問題なくポインタ格納できるものとして
0011以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 17:58:20.101ID:rYxGYgjR0
instance = nullptrの誤り
0012以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 17:59:23.373ID:H9KtQFeM0
😡 inline std::unique_ptr<Test> instance:
0013以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:01:34.724ID:whTXElN1M
                    rっ
   >>9 ガッ         ||
            l\.      |.ハ,,ハ   
    \. \.     |_\   ( ゚ω゚ )  
       \ \\     \ \  〉   _二二二つ
         \ \       \ \   /
             \       \_ノ
                    \\
              )(     \\
             ⌒) ゞ      レ
0014以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:03:07.292ID:NYAoRzvl0
逆になぜこれをアホみたいだと思うの?
0015以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:03:08.372ID:H9KtQFeM0
動くし別にいいんじゃねえの
0016以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:03:11.495ID:NfiSr7rOd
>>12
すまん、指摘ありがとう
ちゃんとスマートポインタ使います…
0017以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:04:14.079ID:NfiSr7rOd
>>14
150画面くらいあってメイン処理のステップ数が死ぬほど長くなる
優秀なエンジニアはもっとコンパクトにやるんじゃないかと思って…
0018以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:10:54.781ID:H9KtQFeM0
>>16
inlineなしでちゃんと動く?
C++最近触ってないから自信ないけどinstanceの実体がなさそう
0020以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:12:28.071ID:NYAoRzvl0
>>17
つまり、150クラスあるってことでしょ?
それやり方の前に設計見直した方が良くない?
共通化と最適化ができていないよ多分
0021以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:12:35.820ID:G9L+9NEz0
マクロ使えばif文が伸びるの防げそうだけどどう思う?
0022以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:14:00.874ID:H9KtQFeM0
クラスの数はさておき仮想クラスの基本的な使い方だしここは大丈夫だと思う
0023以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:16:30.922ID:G9L+9NEz0
>>21
テンプレートでいいか
0024以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:18:24.257ID:NfiSr7rOd
>>20
うわー確かに
言われるまで150クラス作るつもりでいた…
落ち着いて考えれば画面ごとの処理なんて共通しているものが多いし大幅に減らせるな…
システムの新規設計なんて初めてだから根本的な箇所で謝っていた
マジでありがとう
これなら普通に短くできそう
0025以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:19:30.440ID:h8GDYQBs0
idとfactoryメソッドをstd::mapで紐づけておけば条件分岐の嵐は一応避けられるかな
0026以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:19:50.637ID:whTXElN1M
よかったななんかしらんけど
0028以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:20:40.050ID:NfiSr7rOd
あ、スマートポインタ使ってない理由思い出したわ
フレームワーク側で親要素と子要素に分かれてて、親がデストラクトされるタイミングで全ての子要素が消えるからスマートポインタの使用は公式が禁止してたわ
0029以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:21:08.318ID:NfiSr7rOd
>>27
ありがとうございます…!
0030以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:24:05.036ID:H9KtQFeM0
Qtか
0031以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:24:29.828ID:NfiSr7rOd
>>30
なんでわかるんだ凄すぎだろ…
0033以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:26:17.442ID:whTXElN1M
なんとなくわかるよね
0034以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/05/20(土) 18:27:19.253ID:h8GDYQBs0
Qtはライセンス関係複雑だから手出せないや
■ このスレッドは過去ログ倉庫に格納されています