How to properly spawn child actor?

Hey guys!
I’m wondering what is the correct way to spawn actor of child class and get pointer to parent class.


	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Gun)
		class TSubclassOf<class ABaseWeapon> gunClass;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Gun)
		class ABaseWeapon * gun;

And here is .cpp

	const FVector spawnLocation = GetMesh()->GetSocketLocation("RightHand");
	const FRotator spawnRotation = GetMesh()->GetSocketRotation("RightHand");
	const FActorSpawnParameters spawnParams;
	gun = GetWorld()->SpawnActor<ABaseWeapon>(gunClass, spawnLocation, spawnRotation, spawnParams);

But I’m still getting exceptions. Any help?

What are the exceptions?

Is the ABaseWeapon header file included anywhere?

Also try

TSubclassOf<ABaseWeapon> gunClass;

– Without the class defines at the start.

I get exception 0xC0000005: access violation in:

    template< class T >
    	T* SpawnActor( UClass* Class, FVector const& Location, FRotator const& Rotation, const FActorSpawnParameters& SpawnParameters = FActorSpawnParameters() )
    		return CastChecked<T>(SpawnActor(Class, &Location, &Rotation, SpawnParameters),ECastCheckedType::NullAllowed);

Header file is included.

First thing I would try is checking GetWorld is not returning nullptr. Probably worth checking that on gunClass too.,