SetActorLocation Crashing

Ah, just read your answer more carefully. This is what is happening.
The TSubClassOf in the projectile example is used to specify the class of the spawned projectile, it is not used to store a reference to your weapon. In your case you need create a variable in your header such as:

ATestWeapon* MyWeapon;

Then, after spawning your weapon you assign it to your weapon variable:

MyWeapon = Wp;

Finally, when you move your weapon you simply do the following:

if(MyWeapon) SetActorLocation(blablablabla);