通知
すべてクリア
05/02/2024 12:43 am
c++の作法について。
独自でクラスを作って他のクラスで使う場合、ヘッダーでの型宣言時にclassと付けることに今更気づきました。
class UStaticMeshComponent* PickupMesh;
classを付けないものもある気がするのですが、この辺りのルールはどういうものになりますでしょうか?(他の言語出身者からすると違和感があり...)
EBatteryPlayState CurrentState;
05/02/2024 12:44 am
classを付ける物はClassの物に限定されます。
EBatteryPlayStateはクラスではなくenumに見えますので、前にclassを付けてないです。
でもClassの中でもつける物とつけないものが分かれています。
classを付ける理由はincludeなしでそのクラスを宣言するためです。例えばUStaticMeshComponentを使いたい場合、
#include "Components/StaticMeshComponent.h"
を追記する必要があります。
これがないとUStaticMeshComponentは認識できません。
UEのC++ではヘッダーファイルをincludeします。
そこで、そのヘッダーファイルに他にもincludeしているプリプロセッサ ディレクティブがあるとそのヘッダーファイルの読み込みとかが連鎖的に起こってしまい、性能的な問題を起こしたり、ビルドのエラーを吐く可能性があります。
なのでなるべくヘッダーではほかのクラスをincludeせずにそれがclassだと認識させて、cppのファイルの方でincludeさせています。
class宣言はその為に、今宣言しているのがクラスファイルだって事をパソコンに伝えるためのものです。