【UnrealEngine】.hと.cppファイルについて【C++】
VisualStudioをダウンロードして、UEでC++ファイルを作成!さぁ、これからC++を勉強しながら触っていくぞと息巻いていたのですが、しょっぱなから「.h」「.cpp」ファイルとは何だ!?と躓き簡単にはいかないなと思いました。
上記を調べてみたところどうやら、C++では基本的に「.h」と「.cpp」の2種類のファイルで1セットとして使用するそうです。
※画像のように1セットになってます。

◆.h(ヘッダーファイル)
この拡張子のファイルは「設計図や宣言ファイル」として使用します。
- クラスの定義
- 変数
- 関数の宣言
- UEのマクロ
上記の内容などを記述する。
コード例)
TestFunctionという関数がありますと宣言
// ================================
// ▼コードを開始
// ================================
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "TestActor.generated.h"
UCLASS()
class ATestActor : public AActor
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable)
void TestFunction();
};
// ================================
// ▲コードの終わり
// ================================
◆.cpp(ソースファイル)
この拡張子のファイルは「処理を書く場所」になります。今回の例では、さきほど宣言した関数の中身を記述しています。と言ってもHellowをログに出すだけの簡単な処理ですが。
コード例)
Helloをログに出す
// ===========================
// ▼ここから
// ===========================
#include "TestActor.h"
void ATestActor::TestFunction()
{
UE_LOG(LogTemp, Warning, TEXT("Hello"));
}
// ===========================
// ▲ここまで
// ===========================
◆なんでファイルを2つに分けるのか?
ファイルが2つで1セットということは理解できたのですが、なんで分ける必要があるのかを調べてみたところ下記3点が理由っぽいですね。
①コンパイル高速化
➥宣言と処理を分けることによってビルド(*1)が早くなる
②構造を分かりやすくする
③外部から使いやすくするため
➥他のファイルからクラスを使うとき「#include “クラス名.h”」で読み込むため、分けておくことで外部から使いやすくなる。
➥**.hは「公開インターフェイス」になる。
※1 ソースコードを実行できるプログラムに変換すること。C++は「人間が読むコード」から「コンピュータが読むコード」に変換する必要がある。
※2 「.h」に「関数の名前」「引数」「戻り値」を記述するため、使う側が求める情報としては十分。そのため、「.cpp」ファイルを外部から使用する必要はない。
簡単ですが、しょっぱな気になってファイルの拡張子別の役割などについて書いてみました。今後も備忘録としてC++に関する記事を書いていこうと思います。
◆YouTube
ゆうtuber・ゆうくん – YouTube
写真1枚からマテリアルを作成できるっていう記事もあったりするよ!
