Приведение типов в Unreal Engine 4

В настоящее время я разрабатываю свои первые классы в Unreal Engine 4. Поскольку я широко использую UScript, меня немного смущает то, как работает приведение типов в чистом C ++. В частности, кастинг класса / объекта.

В настоящее время я составляю оператор switch в MyCustomGameMode, который вызывает MyCustomPlayerController для MyCustomPlayerControllerVariable.

Речь идет о функции, которую я отменяю: virtual UClass* GetDefaultPawnClassForController(AController* InController);

В настоящее время я пытаюсь вызвать переменную с помощью следующей строки кода, которая, как я знаю, неверна, но не знаю почему:

Cast<MyCustomPlayerController>(InController).MyCustomPlayerControllerVariable

Я заинтересован в преобразовании InController в MyCustomPlayerController, но Cast<MyCustomPlayerController>(InController), похоже, не работает. Что я здесь делаю не так?


person Nephera    schedule 01.07.2014    source источник
comment
возможен переход на gamedev.stackexchange?   -  person hammus    schedule 01.07.2014
comment
Вы правильно его кастулируете, можете ли вы нам показать полную реализацию этой функции? И почему вы думаете, что это не работает? Кроме того, MyCustomPlayerController наследуется от AController?   -  person AwDogsGo2Heaven    schedule 01.07.2014


Ответы (2)


Приведение вернет указатель на контроллер вашего плеера, поэтому вам нужно будет использовать ->, чтобы разыменовать его.

const MyCustomPlayerController* MyController = Cast<MyCustomPlayerController>(InController);
check(MyCustomPlayerController);  // asserts that the cast succeeded
const float MyVariable = MyCustomPlayerController->ControllerVariable;

`

person Kevin Mack    schedule 21.10.2014

Когда вы выполняете приведение, он всегда возвращает указатель. Поэтому убедитесь, что вы проверили успешность приведения, прежде чем обращаться к переменным с помощью указателя.

auto MyPC = Cast<MyCustomPlayerController>(InController);
if(MyPC)
{
    MyPC->MyVariable;
}
person Dilhan Geeth    schedule 26.06.2015