fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

PREV | PAGE-SELECT | NEXT

≫ EDIT

UE5/UE4 C++でのクラス(UCLASS)や構造体(USTRUCT)でのメンバ変数の初期化タイミングについて

C++でのクラス(UCLASS)や構造体(USTRUCT)でのメンバ変数の初期化タイミングについてです。
とある状況でエラーがかなりでたので備忘録として…。

こちらを参考にさせていただきました。

・[UE4] メンバ変数の初期化について
https://qiita.com/ykobayashi0/items/e3696ffffc0f9aef8590

公式ドキュメントはこちら。

・Unreal でのオブジェクト処理
https://docs.unrealengine.com/5.0/ja/unreal-object-handling/

基本的には以下の順番で初期化されるようです。

①ヘッダーでの初期化
②コンストラクタでの初期化リストでの初期化
③コンストラクタ内での初期化

ヘッダーかコンストラクタの初期化リストで初期化するのがよさそうです。
見やすさや、わかりやすさであれば初期化リストがいいのかなと個人的には思います。

というわけで一応自分でもコードを書いてみました。
まずはヘッダーでのクラス定義

// クラス定義
UCLASS()
class UNewClass : public UObject
{

//
GENERATED_BODY()

public:
// コンストラクタ
UNewClass();

public:
// 一番早いタイミングで初期化される。ヘッダーで初期化。
int32 InitialiizeValue = 1;
}

次にコンストラクタです。

// コンストラクタ
UNewClass ::UNewClass ()

: InitialiizeValue(2) // 二番目に早いタイミングで初期化される。初期化リストで初期化。
{
// 三番目に初期化されるタイミング。代入と同じ扱い。
InitialiizeValue = 3;
}


一度書いて覚えてしまえばあまりメモなど必要はないと思いますが、
はじめたてなどで躓くことがあれば…みたいな感じとして覚えておければと思います。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/722-13f50be6

TRACKBACK

PREV | PAGE-SELECT | NEXT