引用Enum C ++虚幻

问题描述 投票:0回答:2

我已经在虚幻C ++中创建了一个Enum类

#include "GroundDirection.generated.h"

UENUM(BlueprintType)
enum UGroundDirection
{
     BOTTOM = 0,
     LEFT = 1,
     TOP = 2,
     RIGHT = 3
};

在C#或Java中,我可以实例化此Enum的副本,如下所示:

GroundDirection groundDirection = GroundDirection.BOTTOM;

我以为我可以使用虚幻C ++做类似的事情

UGroundDirection groundDirection = UGroundDirection.BOTTOM;

但是,当我这样做时,出现以下错误:

错误C2228:'。BOTTOM'的左边必须有class / struct / union

如何根据该错误实例化枚举?

c++ enums unreal-engine4 unreal-development-kit
2个回答
0
投票

BOTTOM不是一个类,而是一个整数。此外,UGroundDirection不是类/结构/联合,而是enum,因此它被认为是名称空间。您应使用::而不是.

为了解决您的问题,您只需从UGroundDirection中删除UGroundDirection groundDirection = UGroundDirection.BOTTOM;并替换为:int groundDirection = UGroundDirection::BOTTOM

就这些!


0
投票

我已经在虚幻C ++中创建了一个Enum类

不,你没有。您刚刚创建了C风格的枚举。此外,UE++ coding standard指出枚举应以E作为前缀。

所以您的声明实际上应该像这样:

#include "GroundDirection.generated.h"

UENUM(BlueprintType)
enum class EGroundDirection
{
     BOTTOM = 0,
     LEFT = 1,
     TOP = 2,
     RIGHT = 3
};

要访问枚举的成员,您可以像访问它们一样是类的静态成员来访问它们:

EGroundDirection direction = EGroundDirection::BOTTOM;

这是因为您不是在访问实例的成员,而是在C ++中始终使用::来进行声明。

© www.soinside.com 2019 - 2024. All rights reserved.