Attach weapon with C++

I wonder what is best practice for attaching some equipment staff to character. I have MyCharacter class which in future should be capable of wearing some guns/etc or inventory items hidden. What is best practice ? At the moment i ve attachted to mesh some static component mesh named “gun slot”.

 UPROPERTY(VisibleAnywhere, BlueprintReadWrite, meta = (AllowPrivateAccess = "true"))
 class UStaticMeshComponent* GunMeshSlot;

When I pickup any weapon I just change material and mesh on this “gun slot” component. But what about weapon statistics etc(dmg? max ammo number? type of damage? range?). I should create some C++ class named weapon which will store all statisic and attach whole component from class weapon to character to mesh after pickup?

Probably, the most sensible way to do it, is to create new class deriving from AStaticMeshActor. To handle weapons, you’ll attach your weapon to the character at proper skeleton socket.

This is the approach taken by Epic in ShooterGame sample and Unreal Tournamet 4.

This will make your weapon log separate from character.