So I’m trying to translate Blueprint code to C++ code. How can I do the switch on enum node in c++? I tried it with switch statement and the enum class, but when I’m trying to declear the enum in the header file, it gives me an error that say: “Unrecognized type ‘EWeapons’ - Type must be a UCLASS, USTRUCT or UENUM”.
I will provide a simple example of how to implement an ENUM and switch case.
Header
//Declare enum in global scope
//Add UENUM macro so it can be used with blueprints
UENUM(BlueprintType)
enum EMyEnum
{
itemOne,
itemTwo,
itemThree,
};
UCLASS()
class SOURCETEST426_API ATestActor : public AActor
{
GENERATED_BODY()
private:
//Private variable to hold enum variable data
TEnumAsByte<EMyEnum> enumVariable;
public:
// Sets default values for this actor's properties
ATestActor();
protected:
virtual void BeginPlay() override;
};
Source
#include "TestActor.h"
// Sets default values
ATestActor::ATestActor()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = false;
}
void ATestActor::BeginPlay()
{
Super::BeginPlay();
enumVariable = EMyEnum::itemOne;
switch (enumVariable)
{
case EMyEnum::itemOne:
//Do code
break;
case EMyEnum::itemTwo:
//Do code
break;
case EMyEnum::itemThree:
//Do code
break;
default: break;
}
}
If you’re still struggling, please post your code.
Glad you found my answer helpful. Please mark this as the correct answer to help others who have similar issues in the future.
As to your question. That was just a test, you must initialize a variable before you can use it. So I created the variable, I assigned it a value and then I switched on the variable, the assignment can happen anywhere, just as long as it does have an assignment before you use it.