質問するログイン新規登録

質問編集履歴

3

コードの修正

2019/05/22 01:29

投稿

suittizihou
suittizihou

スコア27

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

質問文が正確でなかったので修正いたしました。

2019/05/22 01:29

投稿

suittizihou
suittizihou

スコア27

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

古いコメントがあったので修正しました(元々返り値は生ポインタで、その名残が残っていました)

2019/05/22 00:53

投稿

suittizihou
suittizihou

スコア27

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;