I think you might be misunderstanding the purpose of static variables. They should be used rarely and only for things that you only ever want one of, regarldess of how many objects of that class are created. If you have a class ANPC and have a static variable within that class (e.g. static float Health), then Health is only created once and is shared by all NPCs, which isn’t normally desired behaviour but can be very useful in some cases.
To fix your problem, you’ll probably want to create the WeaponRef variable in your .h class
e.g.
private:
UPROPERTY(Transient)
class AWEA_Base* WeaponRef;
Then within your BeginPlay method you simply use:
WeaponRef = GetWorld()->SpawnActor<AWEA_Base>(Weapon, FTransform(), SpawnParams);
Whenever you want to then access WeaponRef within this class, you can do so with WeaponRef->WhateverMethodYouWantToCall()