Can I get an explanation with what I'm doing wrong?

It sounds like you’re spawning a different class of object which doesn’t have the weapon name set - but it’s hard for me to say really without seeing the code really!

What you want to do I believe is create a Blueprint class of your weapon, and set the default properties (such as name, projectile etc.) in there. Then you set the weapon class to THAT blueprint and not the C++ class.

Typically you don’t change the properties of a class at runtime, in fact I’m not entirely sure if you can off the top of my head.