☕️

【UE5】USTRUCTの構造体のみのファイルを作成した時にGENERATED_BODYでコンパイルエラーになった際の対処方法

2025/01/02に公開

今回はRiderで構造体のファイルを作成しUSTRUCTにしたときに、そのままだとコンパイルエラーになったので備忘録として対処法について記載しようと思います。

環境

UE5.4.4
Rider 2024.3.2

対応

Riderで以下のような構造体を作成したとします。

ExampleStruct.h

#pragma once

#include "CoreMinimal.h"

USTRUCT(Blueprintable, BlueprintType)
struct FExampleStruct
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere,BlueprintReadWrite)
	float ExampleParam;
};


これでコンパイルをしてみると、GENERATED_BODYの所で以下のコンパイルエラーが出ます

DamageHandleParam.h(15): [C4430] 型指定子がありません - int と仮定しました。メモ: C++int を既定値としてサポートしていません

これの対処方法は自分の場合はファイル名.generated.hを追加することでした。
今回の例で言うとExampleStruct.generated.hを追加するとコンパイルエラーが解消されるようになります。

ExampleStruct.h

#pragma once

#include "CoreMinimal.h"
#include "ExampleStruct.generated.h" //追加

USTRUCT(Blueprintable, BlueprintType)
struct FExampleStruct
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere,BlueprintReadWrite)
	float ExampleParam;
};


解決の参考になれば幸いです。

参考

[UE5] C++ 構造体(Structure)の実装方法

Discussion