C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

UE4: 4.17.2 -> 4.18.1 プロジェクトのアップデートで発生した Warning と Error と対処メモ

若干の調査は必要なものの何れも些細な単純な置き換えで済む問題だけで済んだ。

Warning

1. AddTorqueAddTorqueInRadians に置き換えよ

warning C4996: 'UPrimitiveComponent::AddTorque': Use AddTorqueInRadians instead. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.

void AddTorque
( FVector Torque // Torque to apply. Direction is axis of rotation and magnitude is strength of torque.
, FName BoneName = NAME_None // If a SkeletalMeshComponent, name of body to apply torque to. 'None' indicates root body.
, bool bAccelChange = false // If true, Torque is taken as a change in angular acceleration instead of a physical torque (i.e. mass will have no effect).
);
void AddTorqueInRadians
( FVector Torque // Torque to apply. Direction is axis of rotation and magnitude is strength of torque.
, FName BoneName = NAME_None // If a SkeletalMeshComponent, name of body to apply torque to. 'None' indicates root body.
, bool bAccelChange = false // If true, Torque is taken as a change in angular acceleration instead of a physical torque (i.e. mass will have no effect).
);

API Reference だけ見ても違いがわからない。違いについては予感としては「たぶんない」のだけど、「ない」と知る必要がある。単位や補助単位の変換が必要だとか何かとあり得ない事もない。

source: Runtime/Engine/Classes/Components/PrimitiveComponent.h

void AddTorque(FVector Torque, FName BoneName = NAME_None, bool bAccelChange = false)
{
  AddTorqueInRadians(Torque, BoneName, bAccelChange);
}

安心して単に置き換えるとしよう。

2. FPaths::GameDirFPath::ProjectDir に置き換えよ

warning C4996: 'FPaths::GameDir': FPaths::GameDir() has been superseded by FPaths::ProjectDir(). Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.

source: Runtime/Core/Public/Misc/Paths.h

DEPRECATED(4.18, "FPaths::GameDir() has been superseded by FPaths::ProjectDir().")
static FORCEINLINE FString GameDir() { return ProjectDir(); }

これも単純な置き換えで構わない。

Error

  1. FFileHelper::LoadFileToString の第3引数の型 FFileHelper::EHashOptionsuint32 から暗黙的に変換不能となった

error C2664: 'bool FFileHelper::LoadFileToString(FString &,const TCHAR *,FFileHelper::EHashOptions)': cannot convert argument 3 from 'const uint32' to 'FFileHelper::EHashOptions'

4.18 に取り込まれた以下のコミットで Runtime/Core/Public/Misc/FileHelper.h の struct EHashOptions { enum Type {enum class EHashOptions { に変更されたので整数の値は直接設定不能になった。

素直に FFileHelper::EHashOptions::None など enum class 値に置き換えればよい。