Battery Collector②と③のレクチャーの範囲で、以下3点質問となります。
[質問1]
ファイル名:Pickup.h
Class UStaticMeshComponent* PickupMeshでUStaticMeshComponent(ポインタ)型のクラス宣言していますが、
ポインタ型のクラスを宣言する際は、
インクルードではなく、上記の前方宣言でクラス宣言をした方が良いのでしょうか。
(インクルードが少なくなる以外で利点があるようでしたらお教えいただきたいです)
[質問2]
ファイル名:Pickup.cpp
CreateDefaultSubobjectでUStaticMeshComponentのオブジェクトを作成していますが、
"Components/StaticMeshComponent.h"をインクルードしなくてもビルドが通る理由は何なのでしょうか。
[質問3]
Forceinlineはどのような操作をしたい場合に使用することが多いのでしょうか。
(inlineとどう使い分けるべきかの確認となります)
1.インクルードを少なくなるためのです。UE4は非常に重いのでincludeはなるべく少なくした方がいいです。
2.Pickup.hでCoreMinimal.hをインクルードしてますのでビルドは問題ないです。
CoreMinimal.hは基本的に必要なファイルをインクルードしてるヘッダーファイルです。
3.関数の内容が1~2行ぐらい場合はinlineを付けた方がいいです。
そうすると処理が時間が少し早くなります。
3行以上のコード内容が多い場合はお得がないので使わなくてもいいです。
2つ目の質問に関して、もう1点ご確認したいのですが、
CoreMinimal.h内のどのヘッダーファイルをインクルードしたことによって、ビルドが問題なくなるのでしょうか。
すみません。そこまでは把握していません。
pickup.hのCoreMinimal.h
もしくはGameFramework/Actor.hの中のどのファイルの中で
#include "Components/StaticMeshComponent.h"が入ってると思います。
EngineMinimal.hには
#include "Components/StaticMeshComponent.h"をインクルードしています。