It looks like you're using the pointers being passed along just to have a reference to the base Projectile class
You want an entirely new projectile, so what you want is to just use Projectile() instead of the daisy chained pointer that's coming from... somewhere
It would make sense if the pointer is pointing to some global ProjectileHandler, but since your projectiles are handled in other ways there is indeed no real reason I can see to drag that pointer along
Just saying using a manager is an option, but passing the pointer to a single projectile doesn't have any value
You're trying to create a new Projectile in a more complicated manner than you have to