Spawning actor in C++

If this function is called like this:


MakeWeapon(/*CHILD CLASS OF ADHWeapon*/, EWeaponSlot::PrimaryWeapon);

Will it set the variables in the new actor of ADHWeapon to the data in WeaponToUse?
If not, please write an alternate solution


/**
 * Spawns new weapon then adds to inventory
 * @param WeaponToSpawn : Weapon to spawn
 * @param SlotToUse : Slot to add weapon to
 */
void ADHCharacter::MakeWeapon(ADHItem* WeaponToSpawn, EWeaponSlot SlotToUse)
{
	// Declare and configure ActorSpawnParams
	FActorSpawnParameters ActorSpawnParams;
	ActorSpawnParams.bNoCollisionFail = false;

	// Determine if WeaponToSpawn is a weapon, and else return
	bool bIsWeapon;
	if (Cast<ADHWeapon>(WeaponToSpawn))
	{
		ActorSpawnParams.Template = Cast<ADHWeapon>(WeaponToSpawn);
		bIsWeapon == true;
	}
	else if (Cast<ADHSpecialWeapon>(WeaponToSpawn))
	{
		ActorSpawnParams.Template = Cast<ADHSpecialWeapon>(WeaponToSpawn);
		bIsWeapon == false;
	}
	else return;

	// Spawn weapon if character has authority, otherwise request spawn to authority
	if (HasAuthority())
	{
		if (bIsWeapon) GetWorld()->SpawnActor<ADHWeapon>(ADHWeapon::StaticClass(), ActorSpawnParams);
		else if (!bIsWeapon) GetWorld()->SpawnActor<ADHSpecialWeapon>(ADHSpecialWeapon::StaticClass(), ActorSpawnParams);
		else return;
	}
	else if (!HasAuthority())
	{
		// Request weapon spawn from authority
	}
	else return;
}