Ссылка на Enum C ++ Unreal - PullRequest
0 голосов
/ 26 мая 2020

Я создал Enum Class в Unreal C ++

#include "GroundDirection.generated.h"

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

In C# или Java Я мог бы создать копию этого Enum, сделав что-то вроде этого:

GroundDirection groundDirection = GroundDirection.BOTTOM;

Я думал, что могу сделать что-то подобное с Unreal C ++

UGroundDirection groundDirection = UGroundDirection.BOTTOM;

Однако, когда я это сделаю, я получаю следующую ошибку:

ошибка C2228: слева от '.BOTTOM' должно есть class / struct / union

Как создать экземпляр Enums в свете этой ошибки?

Ответы [ 2 ]

0 голосов
/ 30 мая 2020

Я создал Enum Class в Unreal C ++

Нет, вы этого не сделали. Вы только что создали перечисление в стиле C.
Кроме того, в стандарте кодирования UE ++ указано, что перечисление должно иметь префикс E.

Таким образом, ваше объявление должно на самом деле выглядит так:

#include "GroundDirection.generated.h"

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

Чтобы получить доступ к членам перечисления, вы обращаетесь к ним так, как будто они являются c членами класса:

EGroundDirection direction = EGroundDirection::BOTTOM;

Это потому, что вы обращаетесь не к члену экземпляра, а к объявлению, которое всегда выполняется с использованием :: в C ++.

0 голосов
/ 26 мая 2020

BOTTOM не класс, а целое число. Более того, UGroundDirection - это не класс / структура / объединение, а enum, и, следовательно, он как бы рассматривается как пространство имен. Вы должны использовать :: вместо .

Чтобы решить вашу проблему, вы должны просто удалить UGroundDirection из UGroundDirection groundDirection = UGroundDirection.BOTTOM; и заменить его на: int groundDirection = UGroundDirection::BOTTOM

Вот и все!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...