我已经在虚幻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
如何根据该错误实例化枚举?
BOTTOM
不是一个类,而是一个整数。此外,UGroundDirection
不是类/结构/联合,而是enum
,因此它被认为是名称空间。您应使用::
而不是.
为了解决您的问题,您只需从UGroundDirection
中删除UGroundDirection groundDirection = UGroundDirection.BOTTOM;
并替换为:int groundDirection = UGroundDirection::BOTTOM
就这些!
我已经在虚幻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 ++中始终使用::
来进行声明。