Using an Enum to choose which weapon is spawned

why not just pass the TSubclass directly which holds all the weapons of the type you wanna spawn. it will be like a variable that you can reassign if you want to spawn a different weapon.