Почему в UE4 в метод SpawnActor нужно передавать объект, а не его адрес памяти, в то время как метод имеет в параметре указатель?

В UE4 у класса UWorld есть шаблонный метод SpawnActor, одна из перегрузок которого имеет следующие параметры:

template<class T>
T* SpawnActor(UClass* Class, FTransform const& Transform,const FActorSpawnParameters& SpawnParameters = FActorSpawnParameters())

Для его вызова я создаю локальные переменные, которые намереваюсь туда передать:

UPROPERTY(EditAnywhere)
TSubclassOf<AActor> spawnActor;

FRotator rotation(0, 0, 0);
FVector position(0, 0, 0);
FVector scale(1, 1, 1);
FTransform transform(rotation, position, scale);

И собственно пытаюсь вызвать метод SpawnActor:

GetWorld()->SpawnActor<AActor>(&spawnActor,transform);

Его вызов не происходит из - за того, что я пытаюсь передать адрес объекта spawnActor (но почему? в параметрах метод же имеет указатель, а не ссылку).

При попытке вписать в качестве аргумента - объект (а не его адрес) метод успешно выполняет свою работу:

GetWorld()->SpawnActor<AActor>(spawnActor,transform);

Почему в данном случае необходимо вписать в метод в качестве аргумента именно объект, а не его адрес в то время, как метод имеет в качестве параметра указатель (UClass* Class)?


Ответы (1 шт):

Автор решения: Micronik

В TSubclassOf есть оператор преобразования на тип UClass*:

FORCEINLINE operator TClassType* () const
{
    return **this;
}
→ Ссылка