Please note that you need to use UFUNCTION() only once in this case, so the whole declaration should look like this:
UFUNCTION(BlueprintNativeEvent, Category = "Collision")
void Prox(AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult);
virtual void Prox_Implementation(AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult);
Also, please change
ProxSphere->OnComponentBeginOverlap.AddDynamic(this, &ABasePickUpItem::Prox_Implementation);
to
ProxSphere->OnComponentBeginOverlap.AddDynamic(this, &ABasePickUpItem::Prox);