回答編集履歴

2

修正

2021/04/11 03:15

投稿

fana
fana

スコア11663

test CHANGED
@@ -42,9 +42,7 @@
42
42
 
43
43
  SceneManager::AddSceneは,tmplateにせずとも,単に
44
44
 
45
- `void AddScene( std::shared_ptr<Scene> spScene )`
45
+ `void AddScene( std::shared_ptr<Scene> spScene )` とか `void AddScene( std::unique_ptr<Scene> &&upScene )` とかで問題ないかもしれません.
46
-
47
- で問題ないかもしれません.
48
46
 
49
47
 
50
48
 

1

追記

2021/04/11 03:15

投稿

fana
fana

スコア11663

test CHANGED
@@ -5,3 +5,49 @@
5
5
 
6
6
 
7
7
  の2つが余計なしがらみを生じさせているという話ならば,(この不自由な形を採るべき特段の理由があるのでもなければ)この両方を見直せばよいのでは.
8
+
9
+
10
+
11
+ ---
12
+
13
+
14
+
15
+ Sceneに本当に必要なのは,名前とIDを「取得できること」なのかもしれません.
16
+
17
+ であれば,例えば,Sceneは
18
+
19
+
20
+
21
+ ```C++
22
+
23
+ class Scene
24
+
25
+ {
26
+
27
+ public:
28
+
29
+ virtual const std::string &GetName() = 0;
30
+
31
+ virtual UINT GetID() = 0;
32
+
33
+ };
34
+
35
+ ```
36
+
37
+
38
+
39
+ みたいな形の方が妥当なのかもしれません.
40
+
41
+
42
+
43
+ SceneManager::AddSceneは,tmplateにせずとも,単に
44
+
45
+ `void AddScene( std::shared_ptr<Scene> spScene )`
46
+
47
+ で問題ないかもしれません.
48
+
49
+
50
+
51
+ この形であれば,SampleSceneの生成方法の実装形態には何のしがらみも無くなります.
52
+
53
+ (まぁ,名前とIDの解決手段が何かしら必要なことには変わりはありませんが)