質問編集履歴

6

文章を変更しました。

2021/05/13 14:38

投稿

UE4benkyo-
UE4benkyo-

スコア37

test CHANGED
File without changes
test CHANGED
@@ -2,32 +2,142 @@
2
2
 
3
3
 
4
4
 
5
- 例えば基底クラスAにユニークポインタのコリジョンクラスのメンバせていて、
5
+ 基底クラスAにポインタのメンバコリジョンを書いとします。
6
6
 
7
- コリジョンポインタのゲッタがあります。
7
+ そしてポインタをもらう関数を作ります。
8
8
 
9
- そして、基底クラスAを継承した派生クラスBを作ります。
9
+ 派生クラスBのInitializeでコリジョン生成したとき
10
10
 
11
- そしてmainで基底クラスA型の配列を作ります。
11
+ mainで基底クラス型の配列にいれてGetCollision呼んだときに中身は入っているのでしょうか?
12
12
 
13
- その配列に派生クラスBを入れてmake_unique<A>();で生成します。
14
-
15
- 派生クラスBには生成したときにコリジョンの変数をmake_unique<Collision>で生成されます。
16
-
17
-
18
-
19
- ここからなんですが、
13
+ 下はコードです
20
-
21
- mainでコリジョンのポインタをゲットしたときにコリジョンメンバのなかに入っているのは何ですか?
22
14
 
23
15
 
24
16
 
25
17
 
26
18
 
27
- なので意見を聞きたいです。
28
-
29
- よろしくお願いします。
19
+ ```A
30
20
 
31
21
 
32
22
 
23
+
24
+
25
+ #pragma once
26
+
27
+ #include <memory>
28
+
29
+
30
+
31
+ #include"Collision.h"
32
+
33
+
34
+
35
+
36
+
37
+ class A
38
+
39
+ {
40
+
41
+ private:
42
+
43
+ public:
44
+
45
+
46
+
47
+ //初期化
48
+
49
+ virtual void Initialize() = 0;
50
+
51
+
52
+
33
- わかりにくかったら教えて下さい。
53
+ //コリジョン
54
+
55
+ std::unique_ptr<Collision> m_Collision;
56
+
57
+
58
+
59
+ Collision* GetCollision()
60
+
61
+ {
62
+
63
+ return m_Collision.get();
64
+
65
+ }
66
+
67
+ };
68
+
69
+
70
+
71
+ ```
72
+
73
+
74
+
75
+ ```B
76
+
77
+ #pragma once
78
+
79
+ #include "A.h"
80
+
81
+
82
+
83
+ class B :public A
84
+
85
+ {
86
+
87
+ private:
88
+
89
+ public:
90
+
91
+
92
+
93
+ //初期化
94
+
95
+ void Initialize() override
96
+
97
+ {
98
+
99
+ //コリジョンを生成
100
+
101
+ m_Collision = std::make_unique<Collision>();
102
+
103
+ }
104
+
105
+ };
106
+
107
+
108
+
109
+ ```
110
+
111
+
112
+
113
+ ```main
114
+
115
+
116
+
117
+ #include <iostream>
118
+
119
+ #include"A.h"
120
+
121
+ #include"B.h"
122
+
123
+
124
+
125
+ static const int OBJECT_NUM = 1;
126
+
127
+
128
+
129
+ int main()
130
+
131
+ {
132
+
133
+ std::unique_ptr<A> mA[OBJECT_NUM];
134
+
135
+ mA[0] = std::make_unique<B>();
136
+
137
+ mA[0]->Initialize();
138
+
139
+ std::cout << mA[0]->GetCollision();
140
+
141
+ }
142
+
143
+ ```

5

文章を変更しました。

2021/05/13 14:38

投稿

UE4benkyo-
UE4benkyo-

スコア37

test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  mainでコリジョンのポインタをゲットしたときにコリジョンメンバのなかに入っているのは何ですか?
22
22
 
23
- 私はこういう構造でゲームを作っているのですが中身がemptyでした。
23
+
24
24
 
25
25
 
26
26
 

4

文章を変更しました。

2021/05/13 14:14

投稿

UE4benkyo-
UE4benkyo-

スコア37

test CHANGED
File without changes
test CHANGED
@@ -27,3 +27,7 @@
27
27
  なので意見を聞きたいです。
28
28
 
29
29
  よろしくお願いします。
30
+
31
+
32
+
33
+ わかりにくかったら教えて下さい。

3

文章を変更しました。

2021/05/13 12:24

投稿

UE4benkyo-
UE4benkyo-

スコア37

test CHANGED
@@ -1 +1 @@
1
- C++ 継承について...
1
+ C++ 継承についてわからないところがあります。
test CHANGED
File without changes

2

文章を変更しました。

2021/05/13 12:22

投稿

UE4benkyo-
UE4benkyo-

スコア37

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  その配列に派生クラスBを入れてmake_unique<A>();で生成します。
14
14
 
15
- 派生クラスBには生成したときにコリジョンの変数をmake_unique<Collision>で生成ます。
15
+ 派生クラスBには生成したときにコリジョンの変数をmake_unique<Collision>で生成されます。
16
16
 
17
17
 
18
18
 

1

文章を変更しました。

2021/05/13 12:21

投稿

UE4benkyo-
UE4benkyo-

スコア37

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,8 @@
1
1
  C++の継承について聞きたいことがあります。
2
2
 
3
+
4
+
3
- 基底クラスAにユニークポインタのコリジョンクラスのメンバをもたせていて、
5
+ 例えば基底クラスAにユニークポインタのコリジョンクラスのメンバをもたせていて、
4
6
 
5
7
  コリジョンポインタのゲッタがあります。
6
8