Referencing Variables in other classes

So I have built a weapon inventory system for a multiplayer FPS. I have all the code for my ammo in my base weapon file but that causes all the ammo ints to reset to default when you switch a weapon. I want to put my ammo ints into my player character file so they persist until the player dies and respawns. Here is what my fire function looks like right now. How do i get “Ammo” from my playercharacter? This would be for my reload function as well.
void AARBaseWeapon::Fire()

		if (Role < ROLE_Authority)

		if (Ammo <= 0)

		Ammo = Ammo - 1;

		//Trace the world from pawn eyes to crosshair location
		AActor* MyOwner = GetOwner();
		if (MyOwner)
			FVector EyeLocation;
			FRotator EyeRotation;
			MyOwner->GetActorEyesViewPoint(EyeLocation, EyeRotation);

			FVector ShotDirection = EyeRotation.Vector();
			FVector TraceEnd = EyeLocation + (ShotDirection * 10000);

			FCollisionQueryParams QueryParams;
			QueryParams.bTraceComplex = true;
			QueryParams.bReturnPhysicalMaterial = true;

			FVector TracerEndPoint = TraceEnd;

			EPhysicalSurface SurfaceType = SurfaceType_Default;

			FHitResult Hit;
			if (GetWorld()->LineTraceSingleByChannel(Hit, EyeLocation, TraceEnd, COLLISION_WEAPON, QueryParams))
				//Process damage if blocking hit.
				AActor* HitActor = Hit.GetActor();

				SurfaceType = UPhysicalMaterial::DetermineSurfaceType(Hit.PhysMaterial.Get());

				float ActualDamage = BaseDamage;

					ActualDamage *= 3.0f;

				UGameplayStatics::ApplyPointDamage(HitActor, ActualDamage, ShotDirection, Hit, MyOwner->GetInstigatorController(), this, DamageType);

				PlayImpactEffects(SurfaceType, Hit.ImpactPoint);

				TracerEndPoint = Hit.ImpactPoint;

			if (DebugWeaponDrawing > 0)
				DrawDebugLine(GetWorld(), EyeLocation, TraceEnd, FColor::White, false, 0.5f, 0, 1.0f);

			if (Role == ROLE_Authority)
				HitScanTrace.TraceTo = TracerEndPoint;
				HitScanTrace.SurfaceType = SurfaceType;

			LastFiredTime = GetWorld()->TimeSeconds;