質問編集履歴
3
コードの修正
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// Component型で登録されているコンポーネントを指定された型にダウンキャスト
|
|
13
13
|
component_tmp = std::dynamic_pointer_cast<T>(component);
|
|
14
14
|
// あったら返す
|
|
15
|
-
if (component_tmp.expired()) {
|
|
15
|
+
if (!component_tmp.expired()) {
|
|
16
16
|
return component_tmp;
|
|
17
17
|
}
|
|
18
18
|
}
|
2
質問文が正確でなかったので修正いたしました。
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -18,4 +18,18 @@
|
|
|
18
18
|
}
|
|
19
19
|
return ???;
|
|
20
20
|
}
|
|
21
|
-
```
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
補足
|
|
24
|
+
すみません質問文の最後にboolで返すような記述をしてしまい誤解が生まれてしまったかもしれません。
|
|
25
|
+
返り値はweak_ptrのままで戻り値はboolにはしないつもりです。
|
|
26
|
+
やりたいことはweak_ptrがnullの時、例えば受け取り側で
|
|
27
|
+
```C++
|
|
28
|
+
std::weak_ptr<Rigidbody> p_rigid;
|
|
29
|
+
p_rigid = GetComponent<Rigidbody>();
|
|
30
|
+
```
|
|
31
|
+
とした際コンポーネントリストにRigidbodyが存在しない場合
|
|
32
|
+
```C++
|
|
33
|
+
p_rigid = GetComponent<Rigidbody>();
|
|
34
|
+
```
|
|
35
|
+
の時点でエラーが出て止まってほしいんです。
|
1
古いコメントがあったので修正しました(元々返り値は生ポインタで、その名残が残っていました)
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
返り値がweak_ptr<T>なのでtrue / falseで返せなくてかなり困っています、、、。
|
|
4
4
|
|
|
5
5
|
```C++
|
|
6
|
-
// コンポーネントの
|
|
6
|
+
// コンポーネントの参照を取得
|
|
7
7
|
template<typename T>
|
|
8
8
|
inline std::weak_ptr<T> GetComponent() {
|
|
9
9
|
std::weak_ptr<T> component_tmp;
|